2009-07-13 122 views
1

我想寫一個PHP腳本,可以上傳多個文件。上傳圖片不工作

for($i=0;$i<count($_FILES['uploadimg']['name']);$i++){ 
    $name = $_FILES['uploadimg']['name'][$i]; 
    $type = $_FILES['uploadimg']['type'][$i]; 
    $filepath = $_FILES['uploadimg']['tmp_name'][$i]; 
    $size = getimagesize($filepath); 
    $img = file_get_contents($filepath); 

    //insert into database 
} 

問題是變量沒有以他們應該的方式填充。

當我上傳JPEG「image.jpg的」,我發現這兩個變量具有以下值:(用echo S和var_export小號更換數據庫的代碼)

$name = 'image.jpg'; // good 
$type = ''; // not good 
$filepath = ''; // not good 
$size = false; // not good 
$img = false; // not good 

我要指出,我實現$size$img依賴於$filepath是一個有效的文件路徑。

任何人都可以提供一些洞察什麼是錯的或我失蹤?我現在一直在玩代碼,並且無法提供解決方案。

更新:

Array (
    [uploadimg] => Array (
     [name] => Array (
      [0] => test1.jpg 
      [1] => test2.jpg 
      [2] => test3.jpg 
     ) 
     [type] => Array (
      [0] => image/jpeg 
      [1] => 
      [2] => image/jpeg 
     ) 
     [tmp_name] => Array (
      [0] => /tmp/phpkC6f2F 
      [1] => 
      [2] => /tmp/phpgFrPl8 
     ) 
     [error] => Array (
      [0] => 0 
      [1] => 1 
      [2] => 0 
     ) 
     [size] => Array (
      [0] => 238906 
      [1] => 0 
      [2] => 237308 
     ) 
    ) 
) 

我可以再假設這意味着圖像太大:3倍圖像的回報

print_r($_FILES)

回答

2

This question/answer可能會有所幫助。

編輯 - 這看起來像文件大小問題。這兩個工作文件的大小約爲1.8 Mb,默認情況下PHP的文件上傳限制爲2 Mb。我只能給你建議從這個角度來看的Windows,但我會尋找在php.ini中增加upload_max_filesize也許post_max_size settings

編輯2 - 在PHP.net上有一節lists the error codes for uploading。你得到的是1:

UPLOAD_ERR_INI_SIZE 

Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini. 

這與我在第一次編輯時所說的相符。

+0

謝謝,這解釋了很多,特別是與Ross提出的轉儲建議結合在一起,這是我現在發佈的結果。 – 2009-07-13 19:14:29

1

所有這些文件是相同的類型?上傳幾個文件時,你能給我們一個var_dump的變量嗎?所有上傳的變量是空的還是僅僅是一些?

例如,下面的代碼:

返回此輸出:

Array (
    [upload] => Array (
     [name] => Array (
      [0] => IMG_0005.jpg 
      [1] => IMG_0249.jpg 
      [2] => IMG_0007.JPG 
     ) 
     (...snip...) 
     [size] => Array ( 
      [0] => 1776529 
      [1] => 1902522 
      [2] => 798008 
     ) 
    ) 
) 

記住要檢查$_FILES['name']['error']爲每個文件。

+0

我已經發布了結果,我相信這表明問題是文件大小。 – 2009-07-13 19:16:24