実現したいこと
Base64をBlobにした画像ファイルデータをAjaxでPOST送信したいです。
この時、Blob以外にも複数送信します。
発生している問題・分からないこと
デバッグツールで見る限り、Blobの変換は行えているようなのですが、これをAjaxでPOST送信した際には他はPOSTできているものの、BlobのみPOSTデータにキー自体がありませんでした。
仮にBlobの変換ができておらずNULLなどになっているにしても、POSTデータのキーは最低限あるのではないかと思うところになります。
該当ソースコードを記載しますが、POST送信するには他どのようにすればよろしいでしょうか。
該当のソースコード
PHP
1// cnt:エラー合計数 2// args:base64 3function ocrRequest(cnt,args){ 4 let file = toBlob(args, "image/jpeg"); 5 var fd = new FormData(); 6 fd.append('image', file); 7 fd.append('check_result', 0); 8 fd.append('error_count', cnt); 9 10 $.ajax({ 11 type: "POST", 12 url: "URL", // POST先のURL 13 data: fd, // 送信データ 14 dataType: 'json', 15 cache: false, 16 processData: false, 17 contentType: false, 18 }) 19 .done(function(res) { 20 〜省略〜 21 }) 22 .fail(function(xhr) { 23 〜省略〜 24 }) 25 .always(function(xhr, msg) { 26 〜省略〜 27 }); 28} 29 30function toBlob(base64, mime_ctype) { 31 let bin = atob(base64.replace(/^.*,/, '')); 32 let buffer = new Uint8Array(bin.length); 33 34 for (let i = 0; i < bin.length; i++) { 35 buffer[i] = bin.charCodeAt(i); 36 } 37 let blob; 38 // Blobを作成 39 try { 40 blob = new Blob([buffer.buffer], { 41 type: mime_ctype, 42 }); 43 } catch (e) { 44 return false; 45 } 46 return blob; 47}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
調査を行って以下は行いましたが、状況が変わらずにおります。
・送信データはFormDataで送る
・AjaxにはprocessDataのfalseを設定
以下など参考にしました。
https://teratail.com/questions/375675
追記:2024/1/20 10:37現在
以下を追加で確認しました。
1. FormDataにそもそもappendできているのか
2. BlobをやめてFileオブジェクトに変換するとどうなるか
1については問題なくappendできていました。
2については結果は変わりませんでした。
関数最初の処理を以下のように変えております。
PHP
1 var blob = toBlob(args, "image/jpeg"); 2 var file = new File([blob], 'ファイル名.jpg');
補足
特になし

回答1件
あなたの回答
tips
プレビュー