特定の Andoroid スマートフォンからのみ、xhrhttprequest で 動画をアップロード出来ない状態を解消したい

実現したいこと

特定の Andoroid スマートフォンからのみ、xhrhttprequest で 動画をアップロード出来ない状態を解決したい

前提

特定の Android のスマートフォン実機からのみ、動画ファイルを xhrhttprequest で送信できません。
PC、iOS スマートフォン実機、その他の Android のスマートフォン実機 からは同じ動画ファイルを同じコードで送信出来ています。

発生している問題・試したこと

手元に対象エラーが起こっている実機が無く、別担当の方のテストAndroid実機でのみ再現する状況です。どうやら新しい Android OS だと失敗する傾向が見えていますが、家族に借りた 新しいAndroid 実機(OSバージョンを控えていませんでした)でテストすると成功しているので、必ず失敗する訳でも無いようです。

その担当の方に依頼して、USBで実機をPC接続し、Chrome デベロッパーツールでのデバッグを行ったものの、特に不明なデータも見つけられず、手詰まり感のある状態です。

同様のご経験などある方がいらっしゃいましたら、ヒント等、些細な事でもご教示頂けないでしょうか。
どうぞ、よろしくお願い致します。

追記

次の情報に沿って、php.ini の設定を見直してみましたが、状況は変わりませんでした。念のため、関連値も記載しておきます。
https://stackoverflow.com/questions/69103334/xmlhttprequest-file-upload-not-working-on-mobile

memory_limit => 2G upload_max_filesize => 2G max_input_vars => 1000 max_execution_time => 0 ; post_max_size = 8M (変更前) post_max_size = 64M (変更後)

送信コード(Javascript)

// 関連箇所のみ抜粋 var xhr = new XMLHttpRequest(); var fd = new FormData(); fd.append('upfile', upfile); // upfile = アップロードする動画ファイル ---① xhr.onreadystatechange = function() { if( (xhr.status == 200 || xhr.status == 304) && xhr.response) { var data = xhr.response; console.log( 'COMPLETE! :' ); console.log( data ); } else { console.log( 'Failed. HttpStatus: '+xhr.status ); } }; xhr.open('POST', '/api/video/upload', true); xhr.responseType = 'json'; xhr.send(fd);

送信ログ(Javascript)

送信直前の上記、---①の箇所で、処理を止めて確認した upfile のデータです。
この時点では、ファイルデータが upfile に入っています。

# upfile lastModified: 1713564962045 lastModifiedDate: Sat Apr 20 2024 07:16:02 GMT+0900 (日本標準時) [[Prototype]]: Object name: "VID_2024-04-20-07-15-56-811.mp4" size: 10950674 type: "video/mp4" webkitRelativePath: ""

受信コード(cakePHP3.8)

//src\Controller\Api\VideosController.php public function upload(){ // 失敗する端末からの送信時は、すでにこの時点でデータを取得出来ていない $this->appInfoLog("api.videos.upload", ["request"=>$this->request, "_FILES"=>$_FILES, ] ); // 以下アップロード処理 // ... }

受信ログ(cakePHP3.8)

成功時 _FILESにデータが入っています。

2024-04-20 05:53:13 Info: {"request":{"trustProxy":true},"_FILES":{"upfile":{"name":"VID_20240419_155656.mp4","type":"video\/mp4","tmp_name":"\/tmp\/phpAu0ege","error":0,"size":7330740}},"action":"api.videos.upload"}

失敗時 _FILESが空です。

2024-04-20 06:31:52 Info: {"request":{"trustProxy":true},"_FILES":[],"action":"api.videos.upload"}

補足情報(FW/ツールのバージョンなど)

サーバー

・CentOS Linux 7
・nginx 1.20.1

フロントエンド

・Javascript

バックエンド

・PHP 7.3
・cakephp 3.8

コメントを投稿

0 コメント