使用ajaxFileUpload与SpringMVC实现异步上传下载文件并返回json数据
2017-01-17 15:08
1036 查看
因为最近要实现文件的异步上传并且不能使用表单提交,
过程略有一丝爆炸,所幸还是解决了.
还是直接贴代码吧.
jsp:
<input type="file" id="uFile" name="uFile" onchange="ajaxFileUpload(this)"/>
js:
/* 上传 */
function ajaxFileUpload(fileName){
var msgDiv="";
var fileDiv="";
$.ajaxFileUpload({
url:"请求的URL",
fileElementId:'uFile',
secureuri: false,
dataType: 'text',
success: function (data,status){
var ent=JSON.parse(data);
if("0"==ent.msg){
[b]alert("传成功");
}else{
alert("上传失败");
}
},
error: function (data,status)
{
alert("网络异常,上传失败");
}
}
);
}
[/b]
底层@Controller:
@RequestMapping(value="/URL", method={RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public String uploadPhoto(Model model,@RequestParam MultipartFile uFile, HttpServletRequest request, HttpServletResponse response, ModelMap map){
String
fileName=uFile.getOriginalFilename().toString();
String path="你要保存文件的URL";
String msg="";
try{
if(uFile != null && !uFile.isEmpty()){
//拼接文件上传地址
path=path+fileName;
uFile.transferTo(new File(path));
msg="0";
}
}catch(Exception e){
msg="1";
e.printStackTrace();
}
model.addAttribute("msg",msg);
return toJson(model);
}
希望能够帮到有需要的朋友!
若有疑问可留言,
请注意:以下三项Name必须保持一致.
name="uFile"
fileElementId:'uFile'
@RequestParam MultipartFile uFile
使用SpringMVC实现下载文件功能
//普通请求下载中文文件不出现乱码
@RequestMapping(value="downloadFile")
@ResponseBody
public void downloadFile(HttpServletRequest request,HttpServletResponse response){
try {
String fileName="中文.rar";
//文件上传后名称
String fileNameEncode=new String(fileName.getBytes(),"ISO8859-1");
//将正确并能识别的中文文件名转成ISO8859-1编码才可以正确下载
response.setContentType("application/x-msdownload");
// FileInputStream FileInputStreamRef=new FileInputStream(new File(request.getSession().getServletContext().getRealPath("")+"\\"+fileName));
FileInputStream FileInputStreamRef=new FileInputStream(new File(new File(request.getSession().getServletContext().getRealPath("")+"\\"+fileName));
response.setHeader("Content-Disposition","attachment;filename="+fileNameEncode);
OutputStream osRef=response.getOutputStream();
IOUtils.copy(FileInputStreamRef,osRef);
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}catch(FileNotFoundException e){
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
过程略有一丝爆炸,所幸还是解决了.
还是直接贴代码吧.
jsp:
<input type="file" id="uFile" name="uFile" onchange="ajaxFileUpload(this)"/>
js:
/* 上传 */
function ajaxFileUpload(fileName){
var msgDiv="";
var fileDiv="";
$.ajaxFileUpload({
url:"请求的URL",
fileElementId:'uFile',
secureuri: false,
dataType: 'text',
success: function (data,status){
var ent=JSON.parse(data);
if("0"==ent.msg){
[b]alert("传成功");
}else{
alert("上传失败");
}
},
error: function (data,status)
{
alert("网络异常,上传失败");
}
}
);
}
[/b]
底层@Controller:
@RequestMapping(value="/URL", method={RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public String uploadPhoto(Model model,@RequestParam MultipartFile uFile, HttpServletRequest request, HttpServletResponse response, ModelMap map){
String
fileName=uFile.getOriginalFilename().toString();
String path="你要保存文件的URL";
String msg="";
try{
if(uFile != null && !uFile.isEmpty()){
//拼接文件上传地址
path=path+fileName;
uFile.transferTo(new File(path));
msg="0";
}
}catch(Exception e){
msg="1";
e.printStackTrace();
}
model.addAttribute("msg",msg);
return toJson(model);
}
希望能够帮到有需要的朋友!
若有疑问可留言,
请注意:以下三项Name必须保持一致.
name="uFile"
fileElementId:'uFile'
@RequestParam MultipartFile uFile
使用SpringMVC实现下载文件功能
//普通请求下载中文文件不出现乱码
@RequestMapping(value="downloadFile")
@ResponseBody
public void downloadFile(HttpServletRequest request,HttpServletResponse response){
try {
String fileName="中文.rar";
//文件上传后名称
String fileNameEncode=new String(fileName.getBytes(),"ISO8859-1");
//将正确并能识别的中文文件名转成ISO8859-1编码才可以正确下载
response.setContentType("application/x-msdownload");
// FileInputStream FileInputStreamRef=new FileInputStream(new File(request.getSession().getServletContext().getRealPath("")+"\\"+fileName));
FileInputStream FileInputStreamRef=new FileInputStream(new File(new File(request.getSession().getServletContext().getRealPath("")+"\\"+fileName));
response.setHeader("Content-Disposition","attachment;filename="+fileNameEncode);
OutputStream osRef=response.getOutputStream();
IOUtils.copy(FileInputStreamRef,osRef);
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}catch(FileNotFoundException e){
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
相关文章推荐
- springMvc+swfUpload实现异步文件上传(前台用纯html后台返回json)
- IE使用ajaxFileUpload上传文件后台返回json类型前台弹出下载提示框
- 异步上传文件的实现之ajaxFileUpload的使用
- SpringMVC系列(十一)把后台返回的数据转换成json、文件下载、文件上传
- ie8下使用jquery-file-upload上传文件后返回json格式数据提示下载
- 使用FileUpload工具实现文件上传与使用ThreadLocal容器传递数据实现分页查询下载
- SpringMVC——返回JSON数据&&文件上传下载
- 使用ajaxFileUpload实现文件异步上传
- SpringMVC——返回JSON数据&&文件上传下载
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
- 前端文件上传,struts2后台返回json数据,在IE为什么会以文件下载的形式打开。
- 如何解决“文件上传返回JSON数据,在IE下提示下载文件”的问题?
- spring mvc 下使用ajaxfileupload.js 异步上传文件 并返回信息 各种问题解决
- 使用AjaxFileUpload.js实现异步文件上传示例
- FireFox中使用JQuery的ajaxfileupload插件返回JSON格式数据提示保存的解决方法。
- spring mvc ajaxfileupload文件上传返回json下载问题
- 上传文件返回的json数据会被提示下载问题解决方案
- Query插件之ajaxFileUpload使用方法——input.change()事件的时候实现文件上传
- (转自dflying chen)使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
- 使用ajaxFileUpload实现异步上传图片