teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記

2021/12/08 09:02

投稿

pofinpouty
pofinpouty

スコア20

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,7 @@
20
20
 
21
21
  if( move_uploaded_file( $_FILES['beforeFile']['tmp_name'], $pathBe.'upload_pic.jpg') && move_uploaded_file( $_FILES['afterFile']['tmp_name'], $pathAf.'upload_pic.jpg')) {
22
22
  echo 'アップロードされたファイルを保存しました。';
23
+
23
24
  } else {
24
25
  echo 'アップロードされたファイルの保存に失敗しました。';
25
26
  }
@@ -90,12 +91,21 @@
90
91
  chmod($contentspath . $_FILES["afterFile"]["name"], 0644);
91
92
  echo $_FILES["beforeFile"]["name"] . "をアップロードしました。";
92
93
  echo $_FILES["afterFile"]["name"] . "をアップロードしました。";
94
+    //追記//
95
+                        echo $_FILES["beforeFile"]["error"];
96
+                        echo $_FILES["afterFile"]["error"];
93
- } else {
97
+ } else {
98
+
94
99
  echo "ファイルをアップロードできません。";
100
+ //追記//
101
+                        echo $_FILES["beforeFile"]["error"];
102
+                        echo $_FILES["afterFile"]["error"];
95
103
  }
96
104
  } else {
97
105
  echo "ファイルが選択されていません。";
98
-
106
+ //追記//
107
+                        echo $_FILES["beforeFile"]["error"];
108
+                        echo $_FILES["afterFile"]["error"];
99
109
  }
100
110
  }
101
111
  catch(PDOException $e){

1

追記

2021/12/08 09:02

投稿

pofinpouty
pofinpouty

スコア20

title CHANGED
File without changes
body CHANGED
@@ -66,4 +66,64 @@
66
66
  上記コードの場合、データベースに登録できていた処理も通っていないようだったので探っていたところ、htmlのformに「enctype="multipart/form-data"」と記述すると保存も何もされないという状況になることがわかりました。
67
67
  しかし、いろんなサイトを拝見した結果、ファイルをアップロードするにはこの記述が必要のようなので何がダメなのか確認できませんでした。
68
68
  前回の質問から、html内の記述はformしか変えておりません。
69
- どこが原因かわかる方がいましたら教えていただきたいです。
69
+ どこが原因かわかる方がいましたら教えていただきたいです。
70
+
71
+ **追記**
72
+ データベースへの登録とアップロードを一度にやろうとして混乱していたため、アップロード部分に絞って記述してみました。
73
+
74
+ ```PHP
75
+ <?php
76
+
77
+ $dsn = 'mysql:host=*****;dbname=Test;charset=utf8;unix_socket=/mysql.sock';
78
+ $user = 'user';
79
+ $password = 'pass';
80
+
81
+ $pathBe = '/top/Server/before';
82
+ $pathAf = '/top/Server/after';
83
+
84
+ try{
85
+ if (!empty($_FILES['beforeFile']['tmp_name']) && is_uploaded_file($_FILES['beforeFile']['tmp_name']) && !empty($_FILES['afterFile']['tmp_name']) && is_uploaded_file($_FILES['afterFile']['tmp_name'])) {
86
+ $dbh = new PDO($dsn, $user, $password);
87
+
88
+ if (move_uploaded_file($_FILES["beforeFile"]["tmp_name"], $pathBe. $_FILES["beforeFile"]["name"]) && move_uploaded_file($_FILES["afterFile"]["tmp_name"], $pathAf. $_FILES["afterFile"]["name"])) {
89
+ chmod($markerpath . $_FILES["beforeFile"]["name"], 0644);
90
+ chmod($contentspath . $_FILES["afterFile"]["name"], 0644);
91
+ echo $_FILES["beforeFile"]["name"] . "をアップロードしました。";
92
+ echo $_FILES["afterFile"]["name"] . "をアップロードしました。";
93
+ } else {
94
+ echo "ファイルをアップロードできません。";
95
+ }
96
+ } else {
97
+ echo "ファイルが選択されていません。";
98
+
99
+ }
100
+ }
101
+ catch(PDOException $e){
102
+ header('Content-Type: text/plain; charset=UTF-8', true, 500);
103
+ exit($e->getMessage());
104
+ }
105
+ ?>
106
+
107
+ <head>
108
+ <title>登録画面</title>
109
+ <meta http-equiv="content-type" charset="UTF-8">
110
+ </head>
111
+
112
+ <html>
113
+
114
+ <form action="insert.php" method="post" enctype="multipart/form-data">
115
+ <p>before</p>
116
+ <input type="file" name="beforeFile" accept="image/jpg, image/png" required>
117
+ <p>after</p>
118
+ <input type="file" name="afterFile" accept="image/jpg" readonly>
119
+
120
+ <p><input type="submit" value="登録"></p>
121
+ </form>
122
+
123
+ <?php if ($msg): ?>
124
+ <p><?=$msg?></p>
125
+ <?php
126
+ ```
127
+
128
+ 上記のコードがアップロード部分のみとなります。
129
+ 片方のみにした場合アップロードできることを確認しました。単純に2つ分に増やしたコードだったのですが、原因を教えていただきたいです。