因为最近要实现文件的异步上传并且不能使用表单提交,
过程略有一丝爆炸,所幸还是解决了.
还是直接贴代码吧.
jsp:
<input type="file" id="uFile" name="uFile" οnchange="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){
alert("传成功");
}else{
alert("上传失败");
}
},
error: function (data,status)
{
alert("网络异常,上传失败");
}
}
);
}
底层@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();
}
}