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


how to get the uploaded image path in php and ajax?

我有一个简单的形式:

<input type="hidden" name="MAX_FILE_SIZE" value="2097152" id="MAX_FILE_SIZE">
<input type="file" name="file_upload" id="file_upload" class="picture_main">
<input type="submit" name="upload_picture" id="upload_picture" value="Submit">

我正在尝试进行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:''fakpath''file_name.ext。如果我没记错的话,在一些旧的浏览器中,可以获得真实的路径。但是,它仍然不能帮助您在服务器上获取文件。

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

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

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

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

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

jQueryajax不支持异步文件上传。请参阅使用jQuery';s的ajax方法(不带插件)。

如果你想使用ajax文件上传,建议实现插件:

  • http://valums.com/ajax-upload/(是我的最爱)
  • http://www.webdeveloperjuice.com/2010/02/13/7-trusted-ajax-file-upload-plugins-using-jquery/列出了更多

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

  • http://blueimp.github.com/jQuery-File-Upload/
  • http://valums.com/ajax-upload/

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