我试图让用户使用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
字符串,我无法获得文件位于用户计算机上的真实路径。有人知道我怎么解决这个问题吗?
谢谢
答案 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;
});
});