大きなファイルをサーバー側にアップロードする必要があるプロジェクトに取り組んでいます。私はHTML5 FileReaderとjQueryを使ってファイルをチャンク(ArrayBuffer)でアップロードすることに決めました。ArrayBufferをjQuery経由で1つのAjax呼び出しで送信
チャンクをbase64文字列に変換し、jQuery.postからJSON形式のdataパラメータを使用してバックエンドサーバーに送信することで、このタスクを正常に終了しました。
$.ajax({
url: "/Home/Upload",
type: "POST",
data: {
name: block.name,
index: block.index,
base64: base64
},
processData: true
});
例えば
しかし、base64で変換するには大きすぎるので、私はこのコードを最適化したいと思います。 $.ajax
で直接ArrayBufferを送信できるかどうかを知りたいです。
processData: false
を設定し、ArrayBufferをデータパラメータに入れると、サーバー側にRequest.InputStream
として送信できることがわかりました。しかし、このように私はname
とindex
のような他のデータを付けることはできません。
生のArrayBuffer(またはblob、バイナリ)を別のデータ(名前、インデックス)と共にajax呼び出しで送信することができますか?