@ApiOperation(value = "多图上传") @RequestMapping("/uploadImgList") @ResponseBody public String uploadPictureList(@RequestParam(value="file",required=false)multipartfile[] file, HttpServletRequest request){ File targetFile=null; String msg="";//返回存储路径 int code=1; List imgList=new ArrayList(); System.out.println("图片张数---:"+file.length); if (file!=null && file.length>0) { for (int i = 0; i < file.length; i++) { String fileName=file[i].getoriginalFilename();//获取文件名加后缀 if(fileName!=null&&fileName!=""){ String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getcontextpath() +"/upload/imgs/";//存储路径 //String path = request.getSession().getServletContext().getRealPath("upload/imgs"); //文件存储位置 // String path=System.getProperty("user.dir")+"/upload"; //当前项目服务器根目录路径 String path=System.getProperty("user.dir")+"/upload"; String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());//文件后缀 fileName=new Date().getTime()+"_"+new Random().nextInt(1000)+fileF;//新的文件名 //先判断文件是否存在 String fileAdd = DateUtil.format(new Date(),"yyyy-MM-dd"); File file1 =new File(path+"/"+fileAdd); System.out.println("文件路径---:"+file1); targetFile = new File(file1, fileName); //如果文件夹不存在则创建 if (!targetFile.getParentFile().exists()) { targetFile.getParentFile().mkdirs(); } try { file[i].transferTo(targetFile); msg="/"+fileName; imgList.add(msg); } catch (Exception e) { e.printstacktrace(); } } } } return JSONUtil.toJsonStr(imgList); } @ApiOperation("单图上传") @RequestMapping("/upload") @ResponseBody public String handleFileUpload(@RequestParam("file") multipartfile file) { if (file.isEmpty()) { return "文件为空"; } // 获取文件名 String fileName = file.getoriginalFilename(); String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());//文件后缀 fileName=new Date().getTime()+"_"+new Random().nextInt(1000)+fileF;//新的文件名 // // 获取文件的后缀名 // String suffixName = fileName.substring(fileName.lastIndexOf(".")); // // 文件上传后的路径 // String str = "/upload/"+DateUtil.format(new Date(),"yyyy-MM-dd")+"/"; //部署项目当前目录下创建upload文件夹 // String filePath=System.getProperty("user.dir")+"/upload"; //docker部署指定挂载目录,不然无法访问 String filePath = "/usr/local/Nginx/upload/";//绝对路径 String url = filePath + fileName; File dest = new File(url); System.out.println("文件地址----:"+dest); // 检测是否存在目录 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { file.transferTo(dest); return fileName; } catch (IllegalStateException e) { e.printstacktrace(); } catch (IOException e) { e.printstacktrace(); } return fileName; } /** * 读取源文件名,修改为不重复的文件名 * @param originalFilename * @return */ private String generateFileName(String originalFilename) { List<String> sufList = Arrays.stream(originalFilename.split("\\.")).collect(Collectors.toList()); String suf = sufList.get(sufList.size() - 1); String pre = TimeUtil.getSecondsTimeStampstr(); return pre + "." + suf; }
注意:docker部署区别,因为docker不能直接访问服务器目录,所以启动镜像时需指定挂载目录,不然文件会创建在容器目录下。当时就因为这个原因一直没上传到指定的目录
如上所示,该图片上传到该路径:/usr/local/Nginx/upload/
1:配置Nginx
server {
//映射端口号
listen 8086;
server_name localhost;
location / {
root upload;(该地址表示:/usr/local/Nginx/upload)
index index.html index.htm;
}
}
2、重启Nginx