2013-07-25 59 views
-1

//uploadForm.htmlPHP文件沒有上傳到臨時目錄

<html> 
    <body> 
     <form action="upload_file.php" method="post" enctype="multipart/form-data"> 
      <label for="browseFile">Filename : </label> 
      <input type="file" name="file" id="browseFile"><br> 
      <input type="submit" name="submit" value="Submit"> 
    </body> 
</html> 

//upload_file.php

<?php 
    $allowedExt = array("png","jpg"); 
    $temp = explode(".",$_FILES["file"]["name"]); 
    $extension = end($temp); 
    echo "uploading..."; 
    if((($_FILES["file"]["type"]=="image/png") || ($_FILES["file"]["type"]=="image/jpg")) && ($_FILES["file"]["size"] < 1000000)) 
    { 
     echo "success"; 
     if($_FILES["file"]["error"] > 0) 
     { 
      echo "error in uploading" . $_FILES["file"]["error"]."<br>"; 
     } 
     else 
     { 
      echo "<p>uploaded successfully</p>"; 
     } 
    } 
    else 
     echo "invalid file" ; 

    echo $_FILES["file"]["name"]."stored in ".$_FILES["file"]["tmp_name"]."<br>"; 
    move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/".$_FILES["file"]["name"]); 
    echo "moved Successfully"; 

?> 

當我嘗試呼應的臨時目錄的名稱,它是空白。上傳的文件丟失。 我沒有在MAMP/htdocs文件夾中得到它在/tmp/目錄中。

我沒有uploads目錄/MAMP/htdocs/。不是程序創建一個目錄,如果它不存在?

+0

並羞辱每個人誰回答了便宜又簡單的代表釣魚。點。 –

+1

@STTLCU和恥辱你沒有解釋什麼,以幫助人們學習。 –

+0

@CarlosCampderrós我更關心這個社區的價值,而不是懶惰的編碼者的價值。我會很樂意幫助誰在他/她的研究中表現出努力,因此我真的會尊重我的時間和努力來回答。這裏不歡迎吸血鬼和懶惰的編碼員。 –

回答

1

在您的最後指示,你有$_FILES['name']['tmp_name'],而不是$_FILES['file']['tmp_name']

順便說一句,你在你的腳本有幾個誤區:

  1. 即使有人上傳了無效的文件,你給他們的錯誤信息,但你還是將其移動到最後的地方。
  2. $_FILES["file"]["type"]是由瀏覽器發送的值(即:客戶端)。惡意攻擊者可能會向您發送任何類型的文件並將其僞裝爲image/png,並且您相信它。你不能相信這個價值。相反,您可以使用getimagesize,它會返回一個具有MIME類型的圖像的陣列(並且由服務器檢測到(例如:由您))要檢測MIME類型的非圖像,可以使用FileInfo,具體finfo_file

此外,PHP腳本不會創建uploads文件夾,如果它不存在,而是會顯示一個錯誤(什麼都不做),你必須首先創建該文件夾,並確保該用戶運行你的PHP腳本(通常是運行你的http服務器的相同)對該目錄具有寫權限

編輯:你看不到任何上傳的文件在你的臨時目錄中,因爲(引用http://www.php.net/manual/en/features.file-upload.post-method.php):

該文件將被從臨時目錄中的 請求結束時,如果它沒有被移走或重命名刪除。

0

$_FILES["name"]["tmp_name"]不存在,它應該是$_FILES["file"]["tmp_name"]

0
$allowedExt = array("png","jpg"); 
echo $temp = explode(".",$_FILES["file"]["name"]); 
$extension = end($temp); 
echo "uploading..."; 

if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
    } 
else 
    { 

    move_uploaded_file($_FILES["file"]["tmp_name"], 
    "upload/" . $_FILES["file"]["name"]); 
    echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
    } 
相關問題