前提・実現したいこと
HTMLのformタグを使ってpdf, png, jpegファイルのアップロードを行うソースを書いています。
発生している問題・エラーメッセージ
Macのsafariからだとアップロードできなかったり、アンドロイドスマホからファイルを選択しても選択状態にならない。
環境ごとでアップロードができない場合があります。
また、pdfファイルをアップロードするとpost通信で送信されていない状態になってしまいます。
該当のソースコード
HTML
1 <form class="upload-form" action="upload.php" method="post" enctype="multipart/form-data"> 2 <input type="file" name="fname" accept="image/jpeg, image/png, application/pdf"><br> 3 <input type="text" name="title"><br><br> 4 5 <div class="button_container"> 6 <button class="btn" type="submit" value="送信"><span>送信</span></button> 7 <button class="btn" type="reset" value="リセット"><span>リセット</span></button> 8 </div> 9 </form>
PHP
1if($_SERVER['REQUEST_METHOD'] === 'POST'){ 2 if($_POST['title'] === '') { 3 echo 'タイトルをつけてください。'; 4 echo ('<br><button type=\'button\'><a href=\'upload.html\'>戻る</a></button>'); 5 } 6 //php.iniで設定されているファイルサイズを越えた場合 7 if($_FILES['fname']['error'] === 2){ 8 echo 'ファイルサイズが大きいです。'; 9 10 //ファイルが選ばれているかをファイルサイズで確認 11 } else if($_FILES['fname']['size'] === 0){ 12 echo 'ファイルを選択してください。'; 13 14 //ファイル形式を判定 15 } else if($_FILES['fname']['type'] !== 'image/png' && $_FILES['fname']['type'] !== 'image/jpeg' && $_FILES['fname']['type'] !== 'application/pdf'){ 16 echo 'ファイル形式を変更してください。'; 17 //0であれば、正常に動いているため、アップロードをする 18 } else if($_FILES['fname']['error'] === 0){ 19 20: 21: 22 23} else { 24 echo '不正なアクセスです。'; 25} 26
試したこと
上記のようにファイルについての確認をしています。
Windows Chromeでpngを選択してアップロードしたらファイルを選択してくださいと出てきます。
アンドロイドスマホで撮った写真を選択するとフォームが「ファイルを選択してください」のままになります。
Mac Safariでもアップロードができないです。
pdfのアップロードをすると不正なアクセスですとなります。
原因がよくわかりませんが、同じような環境でもできる場合とできない場合があります。
どのような修正を加えると良いでしょうか。
また、原因を探るためにはどのようにすればよいでしょうか。
補足情報(FW/ツールのバージョンなど)
アンドロイドOSは9.0です。
回答1件
あなたの回答
tips
プレビュー