如何让PHP和AJAX上传的图片路径?(how to get the uploaded image

2019-09-21 13:48发布

我有一个简单的表格:

<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?

有任何想法吗?

谢谢

Answer 1:

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

这将返回唯一的路径客户端机器上的文件。 对于SECURIT原因,它返回像C:\ fakepath \ file_name.ext。 如果我没有记错,在一些老的浏览器有可能得到真正的路径。 但尽管如此,它不会帮助您获得服务器上的文件。

对于AJAX风格的上传,你可以使用一些插件,你有建议。 或者只是使用jQuery的形式插件。 这将工作非常类似$.ajax

现在,当文件被正确上传,您会发现在它所有需要的信息$_FILES

在你的情况下,它会像$_FILES['file_upload']其中“file_upload”是你的文件输入的名称。

现在,你可以将它从临时存储移动move_uploaded_file 。 而且你想与该文件的任何

编辑:我看到你在使用Zend。 看看这有关如何使用的FileUpload元素在服务器端运行。 与Zend你可以使用文件上传方法代替move_uploaded_file



Answer 2:

jQuery的AJAX不支持异步文件上传。 见jQuery的使用jQuery的Ajax方法(无插件)上传文件 。

如果你想使用AJAX的文件上传,建议实行插件:

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


Answer 3:

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

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

对于服务器端,你将需要处理它从流中读取。 我觉得这是一个完整的例子(客户端和服务器端) valums混帐 。



文章来源: how to get the uploaded image path in php and ajax?