标签:timestamp div 同名 Servle upload exception als method tac
UUID.randomUUID().toString()是javaJDK(1.5以上的版本)提供的一个自动生成主键的方法,它生成的是以为32位的数字和字母组合的字符,中间还参杂着4个 - 符号。
作用:它可以作为我们表的标识列来增加,比序列增长更加方便。当然还可以用来拼接作为路径,或者图片的前缀名等等。
使用原因:
文件命名或者其他使用时间命名对于高并发会存在风险,使用UUID会规避风险,
import java.util.UUID;
UUID.randomUUID().toString();
1.作为主键ID:
public void sendSms(QuartzSmsSend quartzSmsSend) { UUID uuid = UUID.randomUUID(); String id = uuid.toString().replace("-", ""); quartzSmsSend.setId(id); quartzSmsSend.setCreateTime(new Timestamp(System.currentTimeMillis())); quartzSmsSendMapper.insertSelective(quartzSmsSend); }
2.作为文件路径:
/**
*
* uploadFile:上传发货文件. <br/>
*
* @author weijq
* @param excel
* @param model
* @param request
* @param response
* @return
* @since JDK 1.6
*/
@RequestMapping(value = "/uploadfile", method = RequestMethod.POST)
@ResponseBody
@NativeJson(true)
public Map<String,Object> uploadFile(@RequestParam(value = "excelFile", required = false) MultipartFile excel,
Model model, HttpServletRequest request, HttpServletResponse response) {
//当有多个文件上传时,如果用MultipartFile
接口来接收,最好是用注解 。//@RequestParam("inputName")
指明该文件对应表单中的 input 标签的 name 属性。如果 name 都是同名的,可以使用MultipartFile []
文件数组来接收
JsonResultThreadLocal.set(false);
Map<String, Object> ret = new HashMap<>();
if(excel==null){
LogUtil.info(MODULE, "发货导入文件不存在");
throw new BusinessException("发货导入文件不存在");
}
String fileId = "";
String oriFileName = excel.getOriginalFilename();
String[] fileNamea = oriFileName.split("\\.");
String fileName = fileNamea[0] + "_" + UUID.randomUUID();
String fileExtName = fileNamea[1];
try {
fileId = FileUtil.saveFile(excel.getBytes(), fileName, fileExtName);
ret.put("fileId", fileId);
ret.put("fileName", fileName);
ret.put("fileExtName", fileExtName);
ret.put("success", true);
} catch (IOException e) {
LogUtil.error(MODULE, "文件保存失败",e);
ret.put("success", false);
}
return ret;
}
针对Controller,解析用了网上其他队友的描述:https://www.jianshu.com/p/5fc5b10fc8dc
在 Controller 中,有几个地方是需要我们注意的:
MultipartFile
接口来接收,最好是用注解 @RequestParam("inputName")
指明该文件对应表单中的 input 标签的 name 属性。如果 name 都是同名的,可以使用 MultipartFile []
文件数组来接收。{fileName}.{suffix}
这段代码将图片名和图片的后缀区分开,因为 GET 方式的 URL 请求地址中的 "." 点号会被当作通配符处理掉,有多种方式可以解决。我这种方式是一种,你也可以用 "." 转义字符来避免其通配符的作用。response.setHeader("Content-Disposition","attachment;fileName=" + "headPic.jpg");
当设置了该响应头时,使用 response
输出流将会被当作附件提供给客户端下载,反之就是将流中的内容输出到页面上。Service 层中要注意的:
java UUID.randomUUID()自动生成主键作为Id或文件路径
标签:timestamp div 同名 Servle upload exception als method tac
原文地址:https://www.cnblogs.com/xuhk1819/p/12207052.html