ppumpkin, 나는 자신을 잘 설명한다고 생각하지 않는다. 미안 나는 확실히 lamens 용어입니다, 나는 plupload 및 처리기를 동시에 모든 새로운 있습니다.
각 파일의 원래 이름을 유지해야하므로 고유 한 이름 지정을 "false"로 사용하고 있습니다. 현재 서버에 업로드 할 때 파일 이름의 이름을 올바르게 지정하고 있지만 SQL 삽입을 위해 동일한 이름을 삽입해야합니다. 만약 내가 (문명 ("name")) 문을 내 SQL 문에서 값으로 선언 한 FileName을 사용하면 즉시 오류 및 삽입 된 값이 없습니다. 테스트를 위해 파일 이름에 정적 값을 사용하면 파일은 잘 삽입되지만 업로드하는 각 파일에 대해 동일한 이름이 삽입됩니다.
내 업데이트를 포함하여 현재 내 처리기 및 클라이언트 스크립트에 대해 가지고있는 내용.
처리기 :
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim chunk As Integer = If(context.Request("chunk") IsNot Nothing, Integer.Parse(context.Request("chunk")), 0)
Dim chunks As Integer = If(context.Request("chunks") IsNot Nothing, Integer.Parse(context.Request("chunks")) - 1, 0)
Dim fileName As String = If(context.Request("name") IsNot Nothing, context.Request("name"), String.Empty)
If (chunk = chunks) Then
Dim conn As SqlClient.SqlConnection = New SqlClient.SqlConnection(mdata.DBCONN)
Dim command As SqlClient.SqlCommand = New SqlClient.SqlCommand("W2_InsertPhoto 12345," & **fileName**, conn)
Dim rs As SqlClient.SqlDataReader
conn.Open()
rs = command.ExecuteReader()
rs.Close()
rs = Nothing
conn.Close()
conn = Nothing
End If
Dim fileUpload As HttpPostedFile = context.Request.Files(0)
Dim uploadPath = context.Server.MapPath("Upload")
Using fs = New FileStream(Path.Combine(uploadPath, fileName), If(chunk = 0, FileMode.Create, FileMode.Append))
Dim buffer = New Byte(fileUpload.InputStream.Length - 1) {}
fileUpload.InputStream.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, buffer.Length)
End Using
End Sub
내 클라이언트 스크립트 : 회신 ppumpkin에 대한
<script type="text/javascript">
// Convert divs to queue widgets when the DOM is ready
$(function() {
$("#uploader").pluploadQueue({
// General settings,silverlight,browserplus,html5gears,
runtimes: 'flash',
url: 'FileUpload.ashx',
max_file_size: '10mb',
chunk_size: '1mb',
unique_names: false,
// Specify what files to browse for
filters: [{ title: "Image files", extensions: "jpg,jpeg,gif,png,bmp"}],
// Flash settings
flash_swf_url: 'assets/resources/plupload.flash.swf',
// Silverlight settings
silverlight_xap_url: 'assets/resources/plupload.silverlight.xap',
init: {
FileUploaded: function (up, file, info) {
}
}
});
// Client side form validation
$('form').submit(function (e) {
var uploader = $('#uploader').pluploadQueue();
// Validate number of uploaded files
if (uploader.total.uploaded == 0) {
// Files in queue upload them first
if (uploader.files.length > 0) {
// When all files are uploaded submit form
uploader.bind('UploadProgress', function() {
if (uploader.total.uploaded == uploader.files.length)
$('form').submit();
});
uploader.start();
} else
alert('You must at least upload one file.');
e.preventDefault();
}
});
//tweak to reset the interface for new file upload
$('#btnReset').click(function() {
var uploader = $('#uploader').pluploadQueue();
//clear files object
uploader.files.length = 0;
$('div.plupload_buttons').css('display', 'block');
$('span.plupload_upload_status').html('');
$('span.plupload_upload_status').css('display', 'none');
$('a.plupload_start').addClass('plupload_disabled');
//resetting the flash container css property
$('.flash').css({
position: 'absolute', top: '292px',
background: 'none repeat scroll 0% 0% transparent',
width: '77px',
height: '22px',
left: '16px'
});
//clear the upload list
$('#uploader_filelist li').each(function (idx, val) {
$(val).remove();
});
});
});
</script>
감사합니다. 나는 당신의 코드를 사용할 수 있으며, 성공적으로 "이렇게 좋음"과 같은 멀티플 인서트 대신에 파일 당 하나의 레코드를 삽입 할 수 있습니다. 그러나 여전히 "FileName"값을 사용하여 각 파일에 대해 고유 한 이름을 삽입 할 수 없습니다. 내가 마지막 파일 (청크 -1 인 경우)을 "삽입"한 후에 업로드하는 각 파일의 고유 한 파일 이름을 가져 오는 방법을 혼란스럽게 생각합니다. – Jason
@ Jason 더 많은 예제를 추가했습니다. 또한 mulitpart에 데이터를 가져 오기 위해 jQuery'$ '를 사용합니다. 피들러를 사용하여 보내지는 데이터를 잡아 내고 처리기를 디버그하고, 매개 변수에 대해'context.current.request.forms'를 살펴보십시오. 또한 내 anser upvoting 또는 동의 고려하십시오. 감사합니다 – ppumkin
포인트는 SQL 코드에 찍은,이 게시물에 대한 신속하고 더러운 일을했다. 테스트 할 iamges에는 특수 문자 나 공백이 없습니다. 내가 가지고있는 문제에 대한 제안이 있습니까? 새로운 질문을 게시하는 것에 대해 유감스럽게 생각합니다. 내 질문을 편집하고 실제 코드없이 새로운 "코드" – Jason