在文件上传的时候AdDto中的属性都为空是什么原因

来源:3-6 _广告模块开发Service层图片上传功能(下)

慕粉3683290

2017-09-08

写回答

4回答

源生活

2017-09-08

1、form里的 enctype="multipart/form-data" 这个属性加过了?

2、表单里控制的name名称和dto都能对应上吗?

3、web.xml里你是不是用的最终版里的?内容是什么样的?

0
1
慕粉3683290
解决了,多谢了。
2017-09-08
共1条回复

慕粉3683290

提问者

2017-09-08

//szimg.mukewang.com/59b2136800017c6618041216.jpg

帮忙看看,呵呵

0
0

慕粉3683290

提问者

2017-09-08

  1. 表单提交请求

  2. controller处理请求

    /**
    * 新增
    */
    @RequestMapping("/add")
    public String add(AdDto adDto, Model model) {
      if (adService.add(adDto)) {
         model.addAttribute(PageCodeEnum.KEY, PageCodeEnum.ADD_SUCCESS);
      } else {
         model.addAttribute(PageCodeEnum.KEY, PageCodeEnum.ADD_FAIL);
      }
      return "/content/adAdd";
    }


  3. @JsonInclude(Include.NON_NULL)
    public class AdDto extends Ad {
      private String img;

      private MultipartFile imgFile;

      public String getImg() {
         return img;
      }

      public void setImg(String img) {
         this.img = img;
      }

      public MultipartFile getImgFile() {
         return imgFile;
      }

      public void setImgFile(MultipartFile imgFile) {
         this.imgFile = imgFile;
      }

    }

  4. @SuppressWarnings("ALL")
    @Service
    public class AdServiceImpl implements AdService {

      @Autowired
      private AdDao adDao;

      @Value("${adImage.savePath}")
      private String adImageSavePath;

      public boolean add(AdDto adDto) {
         Ad ad = new Ad();
         ad.setTitle(adDto.getTitle());  adDto.getTitle()无法获取到值,因为参数adDto中的属性为空
         ad.setLink(adDto.getLink());
         ad.setWeight(adDto.getWeight());
         if(adDto.getImgFile()!=null&&adDto.getImgFile().getSize()>0){
            String fileName = System.currentTimeMillis()+"_"+adDto.getImgFile().getOriginalFilename();
            //adDto.getImgFile().getOriginalFilename()上传文件时候的文件名
            File file = new File(adImageSavePath+fileName);
            File fileFolder = new File(adImageSavePath);
            if(!fileFolder.exists()){
               fileFolder.mkdirs();
            }
            try {
               adDto.getImgFile().transferTo(file);
               ad.setImgFileName(fileName);
               adDao.insert(ad);
               return true;
            } catch (IOException e) {
    //          e.printStackTrace();
               return false;
            }
         }else {
            //如果文件为必填时,没有上传文件是不能保存的
            return false;
         }
      }

  5. <!-- 配置文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
           <!-- 指定所上传文件的总大小不能超过20M。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
           <property name="maxUploadSize" value="20000000"/>
           <property name="defaultEncoding" value="utf-8"></property>
      </bean>

0
0

源生活

2017-09-08

按视频里,你说下做文件上传功能需要哪几步?你都做了吗?

0
0

IT段子手详解MyBatis遇到Spring 秒学Java SSM开发大众点评

【毕设】SSM全面梳理,前后端分离,zTree 和复杂SQL打造权限系统,解惑MyBatis和RESTful

1001 学习 · 485 问题

查看课程