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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

527閲覧

ファイルをアップロードし、一覧で表示する

soutaiha

総合スコア7

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/04/25 10:24

現在、PHPとHTMLを使ってファイルをアップロードするものを作成しています。

ファイルをアップロードしたのち、一覧で表示させたいのですが、ファイルアップロードの時点で躓いてしまいました。

様々な文献を見てやってみましたが、上手くいきません。
PHPのmove_uploaded_fileを使っているのですが、この選択自体間違っているのでしょうか?

以下、コードを添付します。
また、一覧で表示させる方法が何かあればご教授願いたいです。
【入力フォーム】

HTML

1<div> 2 <form action="log-all.php" method="post" enctype="multipart/form-data" > 3 <div> 4 <input type="file" name="log-file"> 5 </div> 6 <div> 7 <input type="submit" value="アップロード"> 8 </div> 9 </form> 10</div>

【action後のPHPファイル】

PHP

1<? 2 $_FILES['log-file']; 3 $tempfile = $_FILES['log-file']['tmp_name']; 4 $filename = 'log-file' . $_FILES['fname']['name']; 5 if (is_uploaded_file($tempfile)) { 6 if ( move_uploaded_file($tempfile , $filename )) { 7 echo $filename . "アップロードしました"; 8 } else { 9 echo "エラー"; 10 } 11 } else { 12 echo "ファイルが選択されていません"; 13 } 14?>

上のファイルの$filename = 'log-file' . $_FILES['fname']['name'];中、'log-file' は現在ディレクトリ指定していますが、ディレクトリ指定すると、以下のエラーが出ます。

ERROR

1Warning: move_uploaded_file(): The second argument to copy() function cannot be a directory in /Users/・・・/Desktop/・・・/log-all.php on line 6 2 3Warning: move_uploaded_file(): Unable to move '/private/var/folders/l3/dfjywhpj65d0f9qgpsfbjw1ccdnt7v/T/phpz7c1Mw' to 'log-file' in /Users/・・・/Desktop/・・・/log-all.php on line 6

そこでファイルを指定すると、大量の文字コードがファイル内に書かれる状況です。

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

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

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

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

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

yambejp

2022/04/25 10:29

サーバーのOSはなんでしょう?httpdはapacheですか?
CaptainRTA

2022/04/25 10:38

$_FILES['fname']['name']が空で、move_uploaded_file()の第二引数が 'log-file'だけになっていませんか? なのでディレクトリにはコピーできませんと警告が出ているのだと思います まずは$filenameの中身を確認してみてください
soutaiha

2022/04/25 11:07

>CaptainRTAさん。ありがとうございます。 その通りでした。 初歩的なミスで見落としをしていました。 よろしければ、回答欄に再度投稿していただければベストアンサーに致します。
guest

回答2

0

ベストアンサー

$_FILES['fname']['name']が空で、move_uploaded_file()の第二引数が 'log-file'だけになっていませんか?
なのでディレクトリにはコピーできませんと警告が出ているのだと思います

まずは$filenameの中身を確認してみてください

投稿2022/04/25 11:19

CaptainRTA

総合スコア136

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

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

0

とりあえずfileの受け渡しができているか確認するところから

PHP

1<?PHP 2print_r($_FILES); 3?> 4<form method="post" enctype="multipart/form-data"> 5<input type="file" name="log-file"> 6<input type="submit" value="send"> 7</form>

投稿2022/04/25 10:31

yambejp

総合スコア114843

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

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

soutaiha

2022/04/25 11:01

Array ( [log-file] => Array ( [name] => 000096258.pdf [type] => application/pdf [tmp_name] => /private/var/folders/l3/dfjywhpj65d0f9qgpsfbjw1ccdnt7v/T/phpJdQK75 [error] => 0 [size] => 1904947 ) ) となりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問