質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1580閲覧

問合せフォームで添付ファイル機能を作りたい。

codemanvs

総合スコア45

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2021/08/04 03:55

PHPで作っている問い合わせフォームで添付ファイル機能をつけたいです。
以下のサイトを参考にして添付ファイル機能部分を作成しており、画像(img)は添付できるのですがpdfファイルやその他のファイルの取得方法がうまくいかない状態です。
PHPでフォームからのファイルアップロードとメールでの添付送信を実装する

流れとしては、フォームに入力&ファイル添付→確認画面にて入力内容&ファイル添付確認→送信→メールにファイルが添付される

現状、確認画面に行った際にimg以外のpdfファイルが取得できない状態です。

アドバイスいただければ嬉しく思いますのでよろしくお願いします。

html

1 <div class="form_box"> 2 <p class="category">履歴書アップロード<br class="pc_br">(任意)</p> 3 <div class="resume"> 4 <label> 5 <input class="file_input" name="input_file" type="file" name="file" accept="application/pdf">ファイルを選択 6 </label> 7 <p class="choosen">*ファイルが選択されていません</p> 8 </div> 9 </div> 10 11 <div class="form_box"> 12 <p class="category">職務経歴書アップロード<br class="pc_br">(任意)</p> 13 <div class="resume"> 14 <label> 15 <input class="file_input_second" name="input_file" type="file" name="file_second" accept=".png, .jpg, .jpeg, .pdf, .doc">ファイルを選択 16 </label> 17 <p class="choosen_second">*ファイルが選択されていません</p> 18 </div> 19 </div>

php

1//mailcomfirm.php 2 3<?php 4 function fileValidatorSize($data) { 5 //ファイルサイズの上限をMB単位で指定 6 $allowMaxSize = 2; 7 if($data['size'] < $allowMaxSize * 1000000) { 8 return false; 9 } else { 10 return true; 11 } 12 } 13 function fileValidatorType($data) { 14 //許可するファイルのMIMEタイプを指定 15 $allowFileType = array( 16 'image/jpeg', 17 'image/png', 18 'image/gif', 19 'text/plain', 20 'text/csv', 21 'application/pdf', 22 'application/zip' 23 ); 24 if(in_array($data['type'], $allowFileType)) { 25 return false; 26 } else { 27 return true; 28 } 29 } 30 $isErrorFileSize = fileValidatorSize($_FILES['input_file']); 31 $isErrorFileType = fileValidatorType($_FILES['input_file']); 32 33 //添付ファイルアップロード 34 $fileTempName = $_FILES['input_file']['tmp_name']; 35 $fileName = $_FILES['input_file']['name']; 36 $attachedFile = ""; 37 $fileType = ""; 38 if(!$isErrorFileSize && !$isErrorFileType) { 39 if(!empty($fileTempName)) { 40 $isUploaded = move_uploaded_file($fileTempName, 'attachment/'.$fileName); 41 if($isUploaded) { 42 $attachedFile = $fileName; 43 if(strpos($_FILES['input_file']['type'], 'image') !== false) { 44 $fileType = 'image'; 45 } else { 46 $fileType = 'other'; 47 } 48 $uploadError = false; 49 } else { 50 $uploadError = true; 51 } 52 } 53 } else { 54 $uploadError = true; 55 } 56 57 //SESSIONへ受け渡し 58 if(!$uploadError) { 59 $_SESSION['input_file'] = $attachedFile; 60 } 61?> 62 63~~途中省略~~~ 64 65//ファイル取得部分 66 67 <tr id="resume_tr"> 68 <th>履歴書</th> 69 <td> 70 <?php if(!$uploadError && $fileType === 'other'): ?> 71 <?php echo $attachedFile; ?> 72 <span><?php echo $attachedFile; ?></span> 73 <?php else: ?> 74 <span><?php echo $attachedFile; ?></span> 75 <?php endif; ?> 76</td> 77</tr> 78 79<tr id="resume_tr_second"> 80 <th>職務経歴書</th> 81 <td> 82 <?php if(!$uploadError && $fileType === 'other'): ?> 83 <?php echo $attachedFile; ?> 84 <span><?php echo $attachedFile; ?></span> 85 <?php else: ?> 86 <span><?php echo $attachedFile; ?></span> 87 <?php endif; ?> 88 </td> 89 </tr> 90<tr> 91

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbeTakashi

2021/08/04 04:11

ソースコードの精査はできていませんが、HTML側は最低でも<form>タグから</form>の部分まですべて入れた方がいいでしょう。回答に必要な情報が漏れている可能性があります。
FKM

2021/08/04 04:15

転送しようとしているpdfの容量はphp.iniに設定しているデフォルト転送MAX容量未満でしょうか?
guest

回答1

0

ざっくりみただけなのですが履歴書と職務経歴書のinputタグが両方とも
name="input_file"になっていて意図したinputタグから取れていない可能性と

accept属性の書き方、でしょうか↓
http://html5.cyberlab.info/elements/forms/input-accept.html

投稿2021/08/04 04:15

odataiki

総合スコア973

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問