0

ビデオ、オーディオ、画像、PDF、PPT、ワードファイルをアップロードしてディレクトリに保存したい...ここにアップロード用のコードがあります..、、、エラーはありませんが、出力もありません...フォルダーを開きましたが、画像ファイルはありません...さらに、PDF、ワード、ビデオファイルもアップロードする方法を教えていただければ非常に助かります...

私がこれまでに持っているものは次のとおりです。

これはadd-material.phpです

<form id="form" method="post" action="add-material-action.php" enctype="multipart/form-data">
<label for="file">Upload Your File Here:</label><input type="file" name="uploadedfile" id="uploadedfile"/><br /><br />

<input class="mybutton" type="submit" name="Add Material" class="button"  value="Add  Material" />

私のフォームはかなり大きいので、関連するコード行のみをここに貼り付けます

これは add-material-action.php です

$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["uploadedfile"]["name"]));
if (( ($_FILES["uploadedfile"]["type"] == "image/gif")
|| ($_FILES["uploadedfile"]["type"] == "image/jpeg")
|| ($_FILES["uploadedfile"]["type"] == "image/png")
|| ($_FILES["uploadedfile"]["type"] == "image/pjpeg"))
&& ($_FILES["uploadedfile"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
 if ($_FILES["uploadedfile"]["error"] > 0)
 {
 echo "Return Code: " . $_FILES["uploadedfile"]["error"] . "<br />";
 }

 elseif (file_exists("learningmaterial/" . $_FILES["uploadedfile"]["name"]))
  {
  echo $_FILES["uploadedfile"]["name"] . " already exists. ";
  }
else
  {
  move_uploaded_file($_FILES["uploadedfile"]["tmp_name"],
  "learningmaterial/" . $_FILES["uploadedfile"]["name"]);
  echo "Stored in: " . "learningmaterial/" . $_FILES["uploadedfile"]["name"];
  }
}
else
{
 echo "Invalid file";
}

事前に感謝します:)

4

4 に答える 4

1

少なくとも「無効なファイルエラー」が発生するはずです。したがって、処理後に出力が得られないのは興味深いことです。

私は次のことをお勧めします:

$ allowedExts = array( "jpg"、 "jpeg"、 "gif"、 "png")と同様に、mime-typesに対しても同じことを行い、in_array(type、collection)を実行します。

これにより、ホワイトリストに拡張機能やmimeタイプを簡単に追加できます。

また、より役立つように特定のエラーメッセージを出力します

if (!in_array($mime, $mimeCollection)) {
   echo "Invalid mime-type";
} else if (!in_array($ext, $extCollection)) {
   echo "Invalid file extension";
} else if ($size > $max) {
   echo "File is too large";
} 

... additional checks

また、エラーレポートを有効にして、出力が得られないために何か他のことが起こっているかどうかを確認します。

error_reporting(E_ALL ^ E_NOTICE);

ただし、スクリプトでレポートを有効にするよりも、ログを確認する方が好きです。

于 2012-10-06T14:48:46.267 に答える
1

あなたが取った $allowedExts = array("jpg", "jpeg", "gif", "png");

しかし、ビデオ、オーディオ、画像、pdf、ppt、word をアップロードしたい。まず、次のように拡張リストを編集します

$allowedExts = array("jpg", "jpeg", "gif", "png","txt","doc","pdf","mp3");

アップロードするすべての拡張機能を追加してください コードはまったく問題ないようです。アップロードに必要なフォルダに権限があるかどうかを確認してください

于 2012-10-06T14:35:57.097 に答える
0

WinSCP を使用して同じ問題が発生しました。新しいアップロードが表示されるように、サーバー側を更新するだけで済みました。 ここに画像の説明を入力

于 2014-02-12T07:28:07.673 に答える
0

これを試してください。成功するには true が必要です

if(!move_uploaded_file(move_uploaded_file($_FILES["uploadedfile"]["tmp_name"],
  "learningmaterial/" . $_FILES["uploadedfile"]["name"]))
    {
        echo "can't move file";
    }
于 2012-10-06T15:05:44.770 に答える