ppumpkin、私は自分自身をよく説明しているとは思わない。申し訳ありませんが私は確かにlamensの用語ですが、私はpluploadとハンドラのすべての新しいです。
私は各ファイルの元の名前を保持する必要があるので、私は "偽"として一意の命名を使用しています。私は現在、サーバーへのアップロード時にファイル名を正しく指定していますが、私のSQLインサートでは、同じ名前が挿入されている必要があります。私がSQL文の値として宣言したFileName(context.Request( "name"))を使用しようとすると、すぐにエラーが発生し、値が挿入されません。テストするためにファイル名に静的な値を使用すると、それはうまく挿入されますが、アップロードするファイルごとに同じ名前が挿入されます。
私のハンドラーとクライアントのスクリプトには現在、このアップデートが含まれています。
ハンドラ:
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>
感謝。私はあなたのコードを使用することができますし、 "良い"です...しかし、ファイルごとに1つのレコードを挿入することができます(しかし、マルチプルの代わりに前に挿入)...しかし、私はまだ "FileName"値を使用して各ファイルの一意の名前を挿入することはできません。 最後のファイル(チャンク-1の場合)が挿入された後で、アップロードする各ファイルの一意のファイル名を取得する方法が混乱していると思います。 – Jason
@ Jasonさらにいくつかの例を追加しました。また、mulitpartにいくつかのデータを取得するためにjQuery '$'を使用します。 fiddlerを使用して送信されるデータをキャッチし、ハンドラをデバッグし、パラメタの 'context.current.request.forms'を調べます。また、私のアンサーをupvotingまたは受け入れることを検討してください。ありがとう – ppumkin
ポイントは、SQLコードで撮影、それは迅速かつこのポストのために汚い行われました。私がテストしているiamgesには、特殊文字やスペースはありません。あなたは私が抱えている問題についてさらに提案していますか? 新しい質問を投稿して申し訳ありません。私の質問を編集し、新しいコード " – Jason