马琰的春天 发表于 2019-1-28 14:45:05

多图片文件上传实现并通过 PostMan 测试

项目的框架是springCloud 的一个服务,图片上传实际上就是用java的IO 流进行读写文件,给后台传递一个路径,后台通过浏览器链接到前端,将前端的图片数据拷贝的服务器的存储地址。1. 服务端保存图片的地址:application.yml 文件中添加如下配置:img:
location: E:\hjy\workspace\wx-back-web\src\main\webapp\olimg\2、有关文件上传实现.Controller 中获取路径的 import org.springframework.beans.factory.annotation.Value;


@Value("${img.location}")
        private String location;Controller 中的方法:import org.springframework.web.bind.annotation.PathVariable;


@RequestMapping("/uploadImg/{imgType}")
        public String uploadImg(
                        @RequestParam("ediormd-image-file") MultipartFile[] files,@PathVariable("imgType") String imgType) {
                ResponseData res = new ResponseData();
         List<ProductPic> proPicList = new ArrayList<ProductPic> ();
      String filePath = location + imgType +"/";
      try {
              if(files != null && files.length >0){
                      for( int i=0;i<files.length;i++){
                              ProductPic proPic = new ProductPic();
                              MultipartFile file = files;
                              String contentType = file.getContentType();
                              String fileName = file.getOriginalFilename();
                              System.out.println("fileName-->" + fileName);
                              System.out.println("getContentType-->" + contentType);
                              String resfileNewName = FileUtil.uploadFile(file.getBytes(), filePath, fileName);
                              proPic.setPicUrl(filePath +resfileNewName);
                              if(imgType.equals("list")){
                                      proPic.setPicName("列表图");
                              }else if("caro".equals(imgType)){
                                      proPic.setPicName("轮播图");
                              }else if("intr".equals(imgType)){
                                      proPic.setPicName("介绍图");
                              }else if("thum".equals(imgType)){
                                      proPic.setPicName("缩略图");
                              }
                              proPicList.add(proPic);
                      }
              }
                        res.setCode(Constant.SUCCESS_CODE);
                        res.setResult(proPicList);
                        res.setMessage(Constant.SUCCESS_MSG);
                } catch (IOException e) {
                        e.printStackTrace();
                        res.setCode(Constant.FAIL_CODE);
                        res.setMessage(Constant.FAIL_MSG);
                } catch (Exception e) {
                        e.printStackTrace();
                        res.setCode(Constant.FAIL_CODE);
                        res.setMessage(Constant.FAIL_MSG);
                }
                JSONObject rdJson = JSONObject.fromObject(res);
                return rdJson.toString();
        }辅助类ResponseData public class ResponseData {
        private Object result; // 返回结果
        private Object baseResult;// 基础信息返回结果
        private String code; // 返回code
        private String message; // 返回提醒消息

        public Object getResult() {
                return result;
        }

        public void setResult(Object result) {
                this.result = result;
        }

        public Object getBaseResult() {
                return baseResult;
        }

        public void setBaseResult(Object baseResult) {
                this.baseResult = baseResult;
        }

        public String getCode() {
                return code;
        }

        public void setCode(String code) {
                this.code = code;
        }

        public String getMessage() {
                return message;
        }

        public void setMessage(String message) {
                this.message = message;
        }

}文件上传服务类:public class FileUtil {

        /**
       * 上传文件并返回文件的名字
       * @param file
       * @param filePath
       * @param fileName
       * @return
       * @throws Exception
       */
        public static String uploadFile(byte[] file,String filePath,String fileName) throws Exception{
                String time = DateHelper.formatDate(new Date(), "yyMMddHHssmm");
      fileName = time +"_" +fileName ;
                File targetFile = new File(filePath);
                if(!targetFile.exists()){
                        targetFile.mkdir();
                }
               
                FileOutputStream out = new FileOutputStream(filePath + fileName);
                out.write(file);
                out.flush();
                out.close();
               
                return fileName;
        }
}3. 通过PostMan 测试安装如下图红色标注的,就可以实现对图片上传的测试,

gengwhs 发表于 2019-5-18 09:46:25

后台接收多张图片的时候长度总是为0,一张图片没问题。
页: [1]
查看完整版本: 多图片文件上传实现并通过 PostMan 测试