做跨域上传用了好几个工作日的时间。想总结一下自己的心得。
1、ajaxFileUplad 异步上传,本来是用下面的代码来做的异步上传,发现能上传到服务器,但是返回值一直进入error 方法。从网上于是查了些资料有些网友说把dataType 的类型从json 改成jsonp的方式。也试过可是一无所获。还是servlet 返回过来的图片地址js接收不到。
接收不到服务端返回过来的参数信息。
下面这段代码是不支持跨域上传的。
$.ajaxFileUpload({
headers : {
'Content-Type' : 'multipart/form-data'
},
url : 'http://localhost:8080/YiDbFileServlet/upload',// servlet请求路径
secureuri : false,
fileElementId : "file-1",// 上传控件的id
dataType : 'json',
//上传的参数
/* data : {
tokenKey : "1862be57edcc558dbda22696507f4b37.101.500",
m : "doctorLicense"
}, */
success : function(data, status, e) {
alert(data.data + "..........");
},
error : function(data, status, e) {
alert('上传出错');
}
})
于是查ajaxFileUplad API文档,我彻底放弃了用ajaxFileUpload 来做跨域上传,发现dataType 的类型中不支持jsonp的上传方式。
于是放弃了ajaxFileUplad 的上传方式。
2、我另辟蹊径,找到了jQuery-File-Upload 这个框架。这个框架的API文档上称可以支持跨域。
于是我找了很多资料,看别人写的代码,看的很蒙,于是我决定硬着头皮看英文的jQuery-File-Upload 文档。找这个框架的Demo.
功夫不负有心人,我运行起来了jQuery-File-Upload 这个框架。具体详解可见附件的jQuery-File-Upload 这个例子。在官网的例子上做了些调整。
3、研究jQuery-File-Upload 框架。
下面是官网的API文档的Demo演示。
https://blueimp.github.io/jQuery-File-Upload/
API文档讲解
跨域上传的文档说明
https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads
跨域上传的例子下载路径
https://github.com/blueimp/jQuery-File-Upload/wiki
这个链接下有很多种语言的例子,可供下载
java 语言下载Upload Servlet excercise (user contribution).