繁体   English   中英

如何在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:\\ 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上有一个完整的示例(客户端和服务器端)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM