前提・実現したいこと
Webブラウザから複数選択した画像と動画をサーバーへアップロードする機能を作成しています。
複数選択された画像、動画をajaxで1件ずつサーバーへアップロードし、サーバー側でサムネイルを作成してファイル名をブラウザへ返す仕様を考えています。
ローディングアニメーションを表示したいので、ajaxの処理の前にアニメーションを表示し、ajaxの処理の後にアニメーションを非表示にしたいです。
記載したソースコードのように実装した場合に、POSTされたファイルが空になってしまう問題が起きてしまいました。
原因と解決方法をご教授いただけると助かります。
よろしくお願いいたします。
発生している問題・エラーメッセージ
POSTされたファイルが空になる
該当のソースコード
js
1 $('input[name=files\[\]]').change(function(){ 2 $('.loading').show(); 3 4 $.when.apply($, 5 $($(this).prop('files')).map(function(){ 6 uploadFile($(this)); 7 }) 8 ).done(function(){ 9 $('.loading').hide(); 10 }).fail(function(){ 11 $('.loading').hide(); 12 alert('通信エラー\nお手数ですが再度時間をおいてお試しください。'); 13 }); 14 }); 15 16 function uploadFile(file){ 17 let fd = new FormData(); 18 fd.append("upfile", file); 19 20 $.ajax({ 21 type : 'POST', 22 enctype : 'multipart/form-data', 23 dataType : 'json', 24 url : './uploadapi/upload.json', 25 data : fd, 26 processData : false, 27 contentType : false, 28 cache : false, 29 success : function(res) 30 { 31 if(res.error){ 32 alert('アップロード失敗:' + res.error); 33 }else{ 34 $('.thumb_area').append('<img src="/assets/img/thumb/' + res.filename + '">'); 35 } 36 } 37 }); 38 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/18 11:22
2020/10/18 11:40
2020/10/19 13:53
2020/10/19 15:44
2020/10/20 00:39