2013-07-05 84 views
0

考慮到這一個幾個小時的研究和思考,但我沒有得到任何地方。PHP - 保存與AJAX上傳的圖像

我設法通過使用FormData對象通過AJAX上傳圖像文件。當文件達到PHP代碼我能夠通過訪問其信息,如'name''type'

$_FILES['newFile']['name']; 
$_FILES['newFile']['type']; 

等等,這意味着按照預期的文件必須上傳,我似乎無法從那裏保存到一個文件。

我曾嘗試:

$file = file_get_contents($_FILES["newFile"]['tmp_name']); 
imagejpeg($file, '/img/uploads/' . $_FILES["newFile"]['name']); 

但隨後imagejpeg給我的錯誤 「預計paramater1是資源,給定的字符串。」 所以,我想:

$file = imagecreatefromstring(file_get_contents($_FILES["newFile"]['tmp_name'])); 
imagejpeg($file, '/img/uploads/' . $_FILES["newFile"]['name']); 

我現在收到的錯誤:/"imagejpeg('/img/uploads/image.jpg'): Failed to open stream. No such file or directory."

有人能解釋我是如何得到該數組中的圖像到磁盤上的文件嗎?

回答

0

使用PHP函數move_uploaded_file( 「$ _ FILES [ 'NEWFILE'] [ 'tmp_name的值']」, 「Location_where_you_want_to_save」);

1

您必須使用move_uploaded_file函數是這樣的:

move_uploaded_file($_FILES["uploaded_file"]["tmp_name"], $pathfilename) 
+0

我也試過這個,我得到了同樣的錯誤:「無法打開流,沒有這樣的文件或目錄。」還有一個錯誤:「無法將'C://xampp/tmp/something.tmp'移動到'/img/uploads/image.jpg'」我的輸出路徑可能有問題嗎? –

+0

是的,這可能是因爲您沒有權限或其他錯誤。但是使用move_uploaded_file()函數就是這種方式。留在那條賽道上。 – bitfiddler

0

想通了!顯然「/ img/uploads /」是問題。 PHP無法識別正斜槓作爲根目錄!我的錯!

move_uploaded_file($_FILES["newFile"]['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/img/uploads/' . $_FILES["newFile"]['name']); 

新的文件路徑之前使用$ _ SERVER [ 'DOCUMENT_ROOT']完美。