DropZone jsを使用して、1つのリクエストで複数のファイルを送信しようとしています。
これが私のコードです:
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone('#upload-Invoices', {
paramName: "files",
maxFilesize: 3.0,
maxFiles: 4,
parallelUploads: 10000,
uploadMultiple: true,
autoProcessQueue: false
});
$('#btnUpload').on('click', function () {
myDropzone.processQueue();
});
コントローラー:
public void FileUpload( IEnumerable<HttpPostedFileBase> file )
{
// Do Something
}
見る:
<form action="/Index/FileUpload"
class="dropzone"
id="upload-Invoices" data-ajax-method="POST" data-ajax="true">
<input type="submit" value="Upload File to Server" id="btnUpload">
</form>
別のリクエストですべてのファイルを1つのリクエストで送信したいのですが、ファイルが受信されています。Dropzoneページには機能しませんが、オプションがあります。前もって感謝します
問題は、入力type="submit"
はそれ自体で別の投稿を行い、タイプをbutton
に変更すると機能しました。
uploadMultipleプロパティのデフォルト値falseを使用してtrueに変更できます
$(".dropzone").dropzone({
// autoQueue:false,
parallelUploads:10,
uploadMultiple:true,
また、一度に2つのファイルが送信されている複数のPOSTが表示されていました(たとえば、合計4つのファイルに対して2つの別々のPOST)。
私は解決策を見つけました here :parallelUploads
を増やしています。ここで、次の方法でドロップゾーンを作成します。
var myDropzone = new Dropzone('div#dz', {
url: 'http://httpbin.org/post',
uploadMultiple: true,
parallelUploads: 10
});
enqueueForUpload
プロパティは廃止されました。代わりにautoProcessQueue
を使用してください。私の勘は、enqueueForUpload
はもう使用されておらず、autoProcessQueue
をfalse
に設定していないので、DropZone.jsは各ファイルを送信することを前提としています。コンポーネントにドロップされます。
_enqueueForUpload: false
_を削除して_autoProcessQueue: false
_を設定し、アップロードする必要のあるすべてのファイルを選択(ドロップ)した後、.processQueue()
関数を呼び出します ドキュメント 。
非常に古い投稿であることがわかりますが、誰かのお役に立てれば幸いです。
2リクエスト
- オプション-ファイルなし
- POST-ファイルあり
Chromeはプリフライトリクエスト(OPTIONS)を実行してCORSヘッダーを探します。これは、ほとんどすべての最新のブラウザが従う標準です。