2013-07-05 66 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']完美。