使用jquery easy ui通过ajax上传文件

时间:2013-11-28 18:06:48

标签: javascript html jquery jquery-easyui

我试图让用户使用jQuery EasyUI form widget从计算机上的文件导入数据:

<form id="my_form" method="POST">
    <input type="file" name="my_file" id="my_file" />
</form>

var file_name = $('#my_file').val();

if(file_name)
{       
    $('#my_form').form('submit', {
        url: [url_to_call],
        onSubmit: function(param){
             param.file_path = file_name;
        }
    });
}

然后当用户在他/她的计算机上浏览该文件时,我想将路径发送到jQuery ajax查询以执行一些上传操作。我遇到的问题是filename返回的内容如下:

C:\fakepath\[name_of_file]

由于fakepath字符串,我无法获得文件位于用户计算机上的真实路径。有人知道我怎么解决这个问题吗?

谢谢

2 个答案:

答案 0 :(得分:0)

尝试了这个插件http://malsup.com/jquery/form/#getting-started

这个插件提供了一个名为AjaxSubmit()的方法,可以很好地上传图像。我在2011年使用过它。

它在IE中有一些问题(旧版本如6,7)。你需要写一些黑客。在后端Firefox和IE上传正确的文件流格式,如Data/Image,但在Chrome(Webkit)中,您将获得Octet Stream。您需要解析服务器上的文件格式以检查该文件是否错误。

答案 1 :(得分:0)

我不知道你的form()函数是做什么的,因为jQuery中不存在这样的方法,但是将文件上传到服务器的常用方法是这样的:

$('#my_file').on('change', function() {
    $.ajax({
        url  : [url_to_call],
        data : new FormData($('#my_form').get(0)),
        processData: false,
        contenttype: false
    }).done(function(param) {
        param.file_path = file_name;
    });
});