最近一直忙着赶项目,许久不来更新了,正好记录下最新项目中所用到的一些技术。这几天一直在做上传下载,虽然网上相关的内容很多,但是只有自己做的时候才能真正的解决问题。
首先是上传,java文件上传会调用这个注解:
@RequestParam("file") MultipartFile file
@RequestMapping("/common/pcuploadsave")
@ResponseBody
public String SaveFile(HttpServletRequest request,HttpServletResponse response,
@RequestParam("file") MultipartFile file,@RequestParam("funcid") String funcid,
Map<String, Object> parameter){
JSONObject info= new JSONObject();
String res="";
if(file.getSize()<=0){
res="请上传文件";
info.put("msg", res);
}else{
String fileName = file.getOriginalFilename();
UploadFile files=new UploadFile(fileName, file);
try {
String id=processAttach(files, parameter);
res="ok";
sss.put("id", id);
} catch (Exception e) {
e.printStackTrace();
}
info.put("msg", res);
}
return info.toString();
}
@FileResolver
public String processAttach(UploadFile file, Map<String, Object> parameter)
throws Exception {
String unitid = (String) parameter.get("unitid");
String path = funcid + "/";//上传文件目录
File f = new File(path);
if (!f.exists()) {//如果目录不存在就创建
f.mkdir();
}
String filename = file.getFileName();
String savename = getSuffix(filename);
float filesize = (float) (file.getSize() / 1024.0f / 1024.0f);
// 构造方法的字符格式这里如果小数不足2位,会以0补足.
DecimalFormat decimalFormat = new DecimalFormat("#0.00");
String p = decimalFormat.format(filesize);// format 返回的是字符串
String uploadFolder = path + savename;
// 将附件移至相关目录
file.transferTo(new File(uploadFolder));
StringBuffer sql = new StringBuffer();
...这里就是向数据库插数据进去
jdbc.execute(sql.toString());
return id;
}
前台用ajax取值,
说明文件上传ok了。