2013-09-25 68 views
0

我有一個表格來上傳文件,代碼檢查它是否到達這裏:

if (is_uploaded_file($_FILES['foto'] ['tmp_name'])){ 
    echo "file is valid and was uploaded"; 
    print_r($_FILES); 
} 

和它說:

file is valid and was uploadedArray ([foto] => 
Array ([name] => Penguins.jpg  [type] => image/jpeg [tmp_name] 
=> /var/www/uploads/phpf8ECTX [error] => 0 [size] => 777835)) 
Array ([foto] => Array ([name] => Penguins.jpg [type] => image/jpeg [tmp_name] 
=> /var/www/uploads/phpf8ECTX [error] => 0 [size] => 777835)) array(1) { 
["foto"]=> array(5) { ["name"]=> string(12) "Penguins.jpg" ["type"]=> string 
(10) "image/jpeg" ["tmp_name"]=> string(26) "/var/www/uploads/phpf8ECTX" ["error"] 
=> int(0) ["size"]=> int(777835) } } 

但文件沒有到達,php.ini配置正確,並且/ var/www/uploads目錄有權限爲所有用戶編寫,我在linux中運行apache2,有關錯誤的任何想法? 謝謝

回答

3

一旦完成,您必須將move_uploaded_file上傳到目錄。我的理解是,如果您沒有明確地將文件保存到不同的文件夾,PHP會將其上傳到臨時文件夾並將其刪除。

if (is_uploaded_file($_FILES['foto'] ['tmp_name'])){ 
    if (file_exists("upload/" . $_FILES["foto"]["name"])) 
    { 
     //Maybe you want to issue an error message if the file already exists, like this. 
     echo $_FILES["foto"]["name"] . " already exists. "; 
    } 
    else 
    { 
     move_uploaded_file($_FILES["foto"]["tmp_name"], 
      "upload/" . $_FILES["foto"]["name"]); 
    } 
} 

並記得爲上傳設置一個不同的臨時目錄。

+1

爲'is_uploaded_file支票()'是多餘的 - 它包含在'move_uploaded_file()以'。 –

1

is_uploaded_file()僅確認您所引用的文件實際上是上傳文件還是系統文件,如說/ etc/passwd。您可以在這裏閱讀更多關於它的信息:http://php.net/manual/en/function.is-uploaded-file.php

如果通過HTTP POST上傳文件名稱的文件,則返回TRUE。 這有助於確保惡意用戶沒有試圖 欺騙腳本來處理它不應該在 工作的文件 - 例如/ etc/passwd。

如果有任何上傳文件完成任何操作可能會將其內容泄露給 用戶,甚至是同一系統上的其他用戶,則此類檢查尤爲重要。

驗證文件名和屬性(根據您的具體要求)後,您必須調用move_uploaded_file()將文件從其臨時位置移動到永久主頁。

http://www.php.net/manual/en/function.move-uploaded-file.php

W3Schools實際上傳腳本的一個很好的例子:

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 
相關問題