文件上传

  • 1 、uniapp前端请求头不要添加,app自动添加,添加了获取不到
  • 前端加上请求头后端获取文件为空
  • 2、后端java代码实例
  • @PostMapping("uploadFile")
        public JsonData upload(HttpServletRequest request, @RequestParam("file") MultipartFile files) throws IOException {
    
            //String path = "/api/upload/" + new SimpleDateFormat("yyyy/MM/dd/").format(new Date());
    
            System.out.println(path);
            //文件大小
            BigDecimal b = new BigDecimal((double) files.getSize() / 1048576);
            double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            System.out.println(f1 + "Mb");
    
            System.out.println("截取"+path.substring(path.indexOf("/"),path.length()));
    //        得到文件名
            UploadUtil uploadUtil = new UploadUtil();
            List<String> url = uploadUtil.uploadFile(request, path);
    
            return JsonData.buildSuccess(url,"上传成功");
    
        }

     

  • 3、工具类
  • public class UploadUtil {
    
        private final static Logger LOG = LoggerFactory.getLogger(UploadUtil.class);
    
        public final static String CDN_URL = "/data/cdnfiles/"; // 图片CDN加速地址
    
        public final static String IMG_URL = "http://i.shihuowang.com";/**
         *  @author: chenzhihao
         *  @description: files[1]="视频1“,files[2]="视频2",path 保存地址
         *  @date:  2021/4/6
         *  @param path 保存地址
         *  @return
         */
        public List<String> uploadFile(HttpServletRequest request, String path){
    
            log.info("request:  "+request.getSession().getServletContext().getRealPath("file"));
    
            CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
    
            commonsMultipartResolver.setDefaultEncoding("utf-8");
    //        File imgFile=null;
            String  url=null;
            List<String> pathRul=new ArrayList<>();
            File newFile=new File(path);
            if(!newFile.exists()){
                newFile.mkdirs();
            }
            if (commonsMultipartResolver.isMultipart(request)){
                MultipartHttpServletRequest mulReq = (MultipartHttpServletRequest) request;
                Map<String, MultipartFile> map = mulReq.getFileMap();
                // key为前端的name属性,value为上传的对象(MultipartFile)
                for (Map.Entry<String, MultipartFile> entry : map.entrySet()) {
                    // 自己的保存文件逻辑
                    log.info("名称:" +entry.getValue().getOriginalFilename());
    //                imgFile = new File(path + "/" + entry.getValue().getOriginalFilename());
                    url=path+entry.getValue().getOriginalFilename();
                    log.info("图片存储的路径:" + url);
                    try {
                        File file1=new File(System.getProperty("user.dir"));
                        String uploadFile = uploadFile(entry.getValue(), file1.getAbsolutePath() + path);
                        pathRul.add(path+uploadFile);
                    }catch (Exception e){
                        pathRul.add(e.getMessage());
                        return pathRul;
                    }
                }
                return pathRul;
            }else {
                return pathRul;
            }
        }
        public String uploadFile(@RequestParam("file") MultipartFile multipartFile, String path) {
            String filename=multipartFile.getOriginalFilename();
            String[] strings = filename.split("\\.");
            String name = System.currentTimeMillis()+"."+strings[strings.length-1];
            try {
                File file=new File(path,name);
                if(!file.exists()){
                    file.mkdirs();
                }
                multipartFile.transferTo(file);
                return name;
            }catch (Exception e){
                return e.getMessage();
            }
        }
    }

     

  • 4、测试用postman
  • 在body的form-data格式进行

posted on 2021-04-14 19:10  java老三  阅读(62)  评论(1)    收藏  举报

导航