0

Expression Webを使用して、スクリプトで記述されていてもエラーメッセージが表示されないように、画像をWebページにアップロードしたい。アップロードフォルダを全員と共有するように設定します。 php.iniに設定されfile_uploads=on;upload_max_size=128Mます。Firefoxではスクリプトがタイムアウトし、IEでは「InternetExplorerはページを表示できません」。

私は何週間も答えを探してきました。私がphpの初心者であっても、私が試した他のすべてのスクリプトは機能します。このアップロードのことで頭を悩ませました。最新のアップロードスクリプトの試行:

if (isset($_POST['submitted'])) {

    // Check for an uploaded file:
    if (isset($_FILES['upload'])) {

        // Validate the type. Should be JPEG or PNG.
        $allowed = array ('image/pjpeg', 'image/jpeg', 'image/JPG', 'image/X-PNG', 'image/PNG', 'image/png', 'image/x-png');
        if (in_array($_FILES['upload']['type'], $allowed)) {

            $target_path = "C:/uploads/";
            $name=$_FILES['upload']['name'];
            $error=$_FILES['upload']['error'];
            $tmp_name=$_FILES['upload']['tmp_name'];

            if($error==UPLOAD_ERR_OK){

               if($_FILES['upload']['size']>0){

               move_uploaded_file($tmp_name, $target_path.$name); 

            print ("The file ".$name." has been uploaded.\n");

             } else{

             print ("There was an error uploading the file, please try again!\n");

             }

             }elseif ($error==UPLOAD_ERR_NO_FILE) {

             print("No files specified.\n");

             }else{

             print("Upload failed.\n");

             }
             print("\n");


        }//End of !in_array IF.

    } // End of isset($_FILES['upload']) IF.


} // End of the submitted conditional.
?>

<div>
  <form action="photogallery.php" enctype="multipart/form-data" method="post">
  <input type="hidden" name="MAX_FILE_SIZE"  value="524288" />
  <p><b>File:</b><input name="upload" type="file" /></p>
  <input name="submit" type="submit" value="Submit" />
  <input name="submitted" type="hidden" value="TRUE" />
  </form>
</div>

ディレクトリのアップロードフォルダに画像をアップロードしてから、Webページに表示しようとしています。画像を手動でフォルダに入れました。リンクを介してウェブページに表示されますが、これらのスクリプトを使用しても機能しません。私のサイトはライブではなく、開発中であり、XAMPPとMicrosoft開発サーバーを使用しています。

4

1 に答える 1

0

実際のエラーはわかりにくいです。ただし、スクリプトについて言及する点がいくつかあります(一般的なアップロードスクリプトの問題)。

  • ['name']constanctは空である可能性があり、これはアップロードエラーを説明します
  • ただし、改ざんされたり、のようなものが含まれている可能性もあり"../Windows/System.ini"ます。これは、フィルタリングせずに出力ファイル名として使用するため、スクリプトにはあまり適していません。
  • MIME['type']も同様に信頼できません。しかし、それはおそらくここでは問題ではありません。少なくとも、strtolower()複数のMIME代替をリストする代わりに、それを使用してください。
  • 最後にerror_reporting(E_ALL);、move_upload_file()権限の問題が問題であるかどうかを通知する有効にします。

シンプルなものから始めることをお勧めします

move_uploaded_file($_FILES["upload"]["tmp_name"], "C:/uploads/test.1");

次に、他の条件で徐々に拡張して、アップロードの問題の原因を見つけます。

于 2011-05-13T05:48:54.597 に答える