如何在php和ajax中获取上传的图像路径?

我有一个简单的forms:

   

我正在尝试上传ajax:

 submit.on("click", function(){ var file = $('#file_upload').val(); uploadImageAjax(file); return false; }); var uploadmageAjax = function(file) { $.ajax({ type: "POST", url: "/test/index/imageupload", data: { 'file': file }, dataType: "json", success: function (data) { console.log(data); } }); } 

我得到的回报是,例如, file: "C:\fakepath\weirdan003-10.jpeg"

但我不确定那条fakepath是什么!

如果我只是在PHP中这样做我会得到这样的图像:

 if (isset($_POST['upload_picture']) ) { $data = $formImageUpload->getValues(); $pictureName = $data['picture']; .... 

然后上传它。

所以我想弄清楚的是,如果ajax将POST操作调用到该操作的正确文件,那么我就可以将其上传到磁盘。

$('#file_upload').val(); 持有$ _FILE ??

有任何想法吗?

谢谢

 var file = $('#file_upload').val(); 

这将仅返回客户端计算机上的文件路径。 出于安全原因,它会像c:\ fakepath \ file_name.ext一样返回。 如果我没记错的话,在一些旧的浏览器中可以获得真正的路径。 但是,它仍然无法帮助您在服务器上获取文件。

对于ajax样式上传,您可以使用一些推荐的插件。 或者只使用jQuery Forms插件。 它的工作方式与$.ajax非常相似。

现在,正确上传文件后,您将在$_FILES找到有关它的所有必需信息

在你的情况下,它将类似于$_FILES['file_upload'] ,其中’file_upload’是文件输入的名称。

现在,您可以使用move_uploaded_file将其从临时存储中移出。 并使用该文件做任何你想做的事情

编辑:我看到你正在使用Zend。 看一下如何在服务器端使用FileUpload元素。 使用Zend,您可以使用FileUpload方法而不是move_uploaded_file

jQuery ajax不支持异步文件上传。 使用jQuery的ajax方法(没有插件)查看jQuery上传文件 。

如果要使用ajax文件上传,建议使用插件:

对于客户端,我建议你使用插件。

对于服务器端,您需要处理它以从流中读取。 我认为在valums git上有一个完整的例子(客户端和服务器端)。