1、因为上传文件会使用到MultipartHttpServletRequest对象,我们需要在Springmvc配置文件中配置一个解析器

java 邮件 附件 java 上传附件_上传

<!--为了使用到spring为我们提供的,MultipartHttpServletRequest对象,我们需要配置一个解析器 -->
       <!-- 而且对于Bean组件要想正常运行,必须配置一个id属性 -->
       <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
         <!-- 请求编码方式 -->
         <property name="defaultEncoding" value="UTF-8"/>
         <!-- 上传文件大小 -->
         <property name="maxUploadSize" value="10000000"/>
         <!-- 缓冲区大小 -->
         <property name="maxInMemorySize" value="1024"/>
         
       </bean>

java 邮件 附件 java 上传附件_上传

2、前端jsp代码

<div>
     <span>上传附件:</span><input type="file" id="accessory1"  name="accessory1" onchange="checkFile(this)" />
     <font size="2" color="red">注意:上传文件大小不能超过10M</font>
</div>

java 邮件 附件 java 上传附件_上传

//上传文件校验
         function checkFile(file){
             var flag = getFilesize(file);
             if(!flag){
                 var fileInput = $("#accessory1");  
          //验证不通过,清空input框
                fileInput.replaceWith(fileInput.clone());
             }  
         }
         
        var fileSize = 0; //文件大小默认为0

        function getFilesize(file) { 
            /*(1)判断文件后缀类型*/
            var strs = new Array(); //定义一数组     
            var pic1 = $(file).val(); //获取input框的值,文件路径
            strs = pic1.split('.'); //分成数组存储
            var suffix = strs[strs.length - 1]; //获取文件后缀
    
            if (suffix != 'pdf' && suffix != 'docx' && suffix != 'doc'&& suffix != 'txt')
            {  
               alert("仅能上传扩展名为pdf、docx、doc、text的文件!");
               return false;
            }  
    
            /*(2)获取文件大小,以Kb为单位*/
            fileSize = file.files[0].size / 1024;
            if (fileSize > 10000) {
                alert("您选择的文件太大,请选择小于10M的文件!");   
                return false;    
            }  
            return true;
        }

java 邮件 附件 java 上传附件_上传

// 表单提交时执行的方法
                var form = new FormData();
                form.append("accessory1", $('#accessory1')[0].files[0]);

java 邮件 附件 java 上传附件_上传

//后端请求处理
   @RequestMapping(value="/addGg",method=RequestMethod.POST)
    @ResponseBody
    public boolean addGg(MultipartFile accessory1){//发布公告的同时是否有附件上传
        if (accessory1 != null ) {
       logger.info("<--带有附件公告发布开始-->");
            InputStream is = null;
            try {
                is = accessory1.getInputStream();
                byte[] b = new byte[is.available()];
                is.read(b);
                jjkjGggl.setAccContent(b);
            } catch (IOException e) {
                logger.info("<--附件读取异常!-->:"+e);
                throw new RuntimeException("附件读取异常!");
            } finally{
                try {
                    is.close();
                } catch (IOException e) {
                    logger.info("<--附件读取释放资源异常!-->:"+e);
                    throw new RuntimeException("附件读取释放资源异常!");
                }
            }
        }return false;
    }