2013-08-22 83 views
0

我正在實現一個代碼,使用PHP將圖片上傳/保存到服務器。用php上傳圖片,一些圖片不上傳

一些圖像上傳和保存,很好。這些圖片是我從互聯網上下載的照片或其他人給我的照片。

但是我用我自己的數碼相機拍的照片不上傳,我得到「無效文件」。現在,我的照片是.JPG。我更改了代碼以包含JPG字符串。我在php.ini上檢查並編輯upload_max_filesize,所以它不是這個尺寸。

我使用PHP 5.3.13

任何想法?這是什麼魔法?

編輯

也許它是我的圖片的元數據?數碼相機的設置?有沒有解決方法?

在此先感謝

這裏是服務器端

$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/bmp") 
|| ($_FILES["file"]["type"] == "image/JPG") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 4000000) 
&& 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("cultmapsite/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: " . "cultmapsite/upload" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
+0

post_max_size呢? – markdwhite

+0

@markdwhite'memory_limit'是128M,post_max_size是8M。 'upload_max_filesize'是4M。所以,根據[this](http://www.php.net/manual/en/ini.core.php#ini.post-max-size)我很好。我試圖上傳的圖片最大爲2.25M ... – slevin

回答

2

您更改了代碼以包含($ _FILES [「file」] [「type」] ==「imag E/JPG 「),但既然你也使用爆炸和$ allowedExts數組,你還應該包括JPG那裏......

嘗試

$ allowedExts =陣列(」 GIF 「 」JPEG「,」 JPG 「,」png「,」GIF「,」JPEG「,」JPG「,」PNG「);

+0

哦,我的上帝!先生,謝謝你。我會檢查我的眼睛和眼鏡,我保證! – slevin

+0

高興地幫忙!請記住,因爲您使用的是$ _FILES [「file」] [「type」],所以您不需要爆炸和$ allowedExts附加代碼。文件類型比確定.... –

0

嘗試的代碼,以將圖像從數碼相機轉換爲另一種延伸像png格式

+0

不是一個好主意。原因如下:該網站的其他用戶呢?他們還必須轉換他們的圖像?不方便用戶!那麼,還有其他建議嗎?無論如何,無論如何感謝 – slevin

0

到位嘗試.JPG的.JPG 我認爲它可能是大寫字母問題

+0

由於大寫,我包括這個'($ _FILES [「文件」] [「類型」] ==「圖像/ JPG」)'在我的代碼....仍然沒有 – slevin

0

,而不是附和「無效文件」,

echo "Invalid File : " . $_FILES["file"]["name"] . $_FILES["file"]["type"]; 

,你會明白爲什麼它返回了。