需求在 系统中 调用 A项目(11.aa.com)的 JS 去请求B项目(22.aa.com)的方法,上传图片,且返回 JSON 显示图片:
JS代码如下
$.ajaxFileUpload({
url:'/uploadUserPic.html',
secureuri:false,
fileElementId:'userPic',
dataType: 'json',
data:{},
success: function (data){
$("#userPicUrl").attr("src",data.url);
$("#avatar").val(data.url);
},
error: function (data, status, e)
{
alert(e);
}
}
);
处理代码:
@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/uploadUserPic.html")
public String saveUserPic(HttpServletRequest request,
@RequestParam(value = "userPic", required = true) MultipartFile file)
throws Exception {
unpackCookie(request);
String fileName = null;
String realPath = com.joytrav.Constant.FILE_REAL_PATH
+ com.joytrav.Constant.USER_UPLOAD_DIR;
if (!file.isEmpty()) {
String fileType = FileUtils.getFileType(file.getOriginalFilename());
String name = RandomUtils.getRandomFileName();
fileName = name + "." + fileType;
byte[] bytes = file.getBytes();
String newFileName = realPath + File.separator + fileName;
FileOutputStream fos = new FileOutputStream(newFileName);
fos.write(bytes); // 写入文件
fos.close();
File newFile = new File(newFileName);
if (newFile.isFile()) {
String url = "https://"+LinkConfigHolder.get().getFileDomain()+"/"
+ USER_UPLOAD_URL + "/"
+ fileName;
return "{'url':'" + url + "'}";
}
}
return null;
}
如果是同顶级域名那么可以在B项目的Jsp中设置:
document.domain=obj.attr("aaa.com");即可,然后 如果设置了2遍就会导致不起作用,忘同行指点。
其中最好不要在input type="file"用 onchange ,因为
.attr("src",data.url);
会再次触发Onchange 方法 出现死循环。
下面即可:
window.οnlοad=function(){
$("#photo1").on('change',function(){
uploadUserPicMore("photo1");
})
$("#photo2").on('change',function(){
uploadUserPicMore("photo2");
})
$("#photo3").on('change',function(){
uploadUserPicMore("photo3");
})
$("#photo4").on('change',function(){
uploadUserPicMore("photo4");
});
$("#userPic").on('change',function(){
uploadUserPicMore("userPic");
});
}
function uploadUserPicMore(file){
var id=file;
$("#loading").ajaxStart(function(){
$(this).show();
}).ajaxComplete(function(){
$(this).hide();
});
$.ajaxFileUpload(
{
url:'/uploadUserPic.html',
secureuri:false,
fileElementId:id,
dataType: 'json',
data:{},
success: function (data){
$("#"+id+"-img").attr("src",data.url);
$("#"+id+"-val").val(data.url);
},
error: function (data, status, e){
alert(e);
}
}
);
return false;
}