2

別のページへの参照中に move_upload_file() 関数に問題があります。間違いなく動作します。しかし問題は、選択したファイルが指定したディレクトリに転送されていないことです。

何が問題なのかわからないので、助けや提案をいただければ幸いです。

コードは次のとおりです。

ページ 1 (入力が行われている場所):

    <form name='NewsForm' method='post' action='conf_news.php' enctype='multipart/form-data' >

 <input type="file" name="file" id="file" value='' >
 <input type='submit' name='AddNews' value='POST' >

 </form>

保存されたファイルの一部を参照する別のページ「conf_news.php」にコードをもたらします:ページ2:

     $PicMessage = "";
    $PicName = addslashes( $_FILES["file"]["name"] );
    $PicType = addslashes( $_FILES['file']['type'] );
    $PicSize = addslashes( $_FILES['file']['size'] );
    $PicError = addslashes( $_FILES["file"]["error"] );
    $PicTempName = addslashes( $_FILES["file"]["tmp_name"] );

$allowedExt = array('jpeg', 'jpg', 'gif', 'png');
$a = explode(".", $PicName);
$extension = end($a); unset($a);

if((($PicType == "image/gif") 
|| ($PicType == "image/png") 
|| ($PicType == "image/jpeg")
|| ($PicType == "image/jpg") 
&& ($PicSize > 100)
&& in_array($extentions, $allowedExt))){

   if($PicError > 0){
       $PicMessage = "Error Type: ". $PicError. "<br />";
   }

    else{
       echo "Upload: ". $PicName. "<br />";
       echo "Type: ". $PicType. "<br />";
       echo "Size: ". ($PicSize / 1024). " Kb<br />";
       echo "Stored in: ". $PicTempName;


       if(file_exists("../photos/". $PicName)){
          $PicMessage = "File Already Exists";
       }

       else{
           move_uploaded_file($PicTempName, "../photos/". $PicName);
           $PicMessage = "Stored in: ". "../photos/". $PicName;
       }
      }

}

else{
$PicMessage = "Invalid File Type";
}

Picture メッセージには、ファイルが転送されたが ptohos フォルダーが空であることが表示されます。何がいけないのか本当に考えられない。

私を助けるために時間を費やしてくれるすべての人に、前もって感謝します。

4

2 に答える 2

2

わかりました。問題が見つかりました。

in_array( $ extentions , $allowedExt))){ これを$extensionに変更します。小さな間違いですが、作業を遅らせるのに十分な能力があります。また、add_slashes() を削除して試してください。

于 2012-12-26T03:38:56.687 に答える
0

この関数のマニュアルに記載されているように、ファイルが実際に POST リクエストでアップロードされていることを確認してmove_uploaded_file() ensures the safety of this operation by allowing only those files uploaded through PHP to be moved.くださいis_uploaded_file()。これにより、ファイルが で使用できるかどうかがわかりますmove_uploaded_file()

elseステートメントを次のように置き換えます。

else if(is_uploaded_file($PicName)) {
  move_uploaded_file($PicTempName, "../photos/". $PicName);
  $PicMessage = "Stored in: ". "../photos/". $PicName;
}
于 2012-12-26T03:02:53.197 に答える