springmvc附件上传核心代码

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 指定所上传文件的总大小不能超过80M......注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
        <property name="maxUploadSize" value="80000000" />
    </bean>
    public String uploadFile(HttpServletRequest request,
            HttpServletResponse response) {
        if(request instanceof MultipartHttpServletRequest){
            MultipartHttpServletRequest multiReq=(MultipartHttpServletRequest) request;
            String orderNum=request.getParameter("orderNum");
            String fileType=request.getParameter("fileType");
            Map<String, List<MultipartFile>> fileMap=multiReq.getMultiFileMap();
            if(fileMap.size()>0){
                for(String key:fileMap.keySet()){
                    List<MultipartFile> list=fileMap.get(key);
                    if(!list.isEmpty()){
                        for(int i=0;i<list.size();i++){
                            MultipartFile webFile= list.get(i);
                            String channel="web"; 
                            String uri=key+".uri";
                            String uripath=UploadPropertyConfigurer.getProperty(uri);
                            String realpath=UploadPropertyConfigurer.getProperty("image.realuri")+uripath;
                            String virtualpath=UploadPropertyConfigurer.getProperty("image.url")+uripath;
                            String fileName=webFile.getOriginalFilename();
                            LOGGER.info("filename:"+fileName); 
                            Date date=new Date();
                            try {
                                if(fileName.contains(".")){
                                    String [] s=fileName.split("\\.");
                                    fileName=orderNum+"_"+new Date().getTime()+"."+s[1];
                                }
                                FileUtils.copyInputStreamToFile(webFile.getInputStream(), new File(realpath, fileName));
                                OrderFileupload record=new OrderFileupload();
                                record.setOrderNum(orderNum); 
                                record.setFileuri(virtualpath); 
                                record.setFileType(key); 
                                record.setFilename(fileName); 
                                record.setCreateDate(date); 
                                record.setUploadChannel(channel); 
                                record.setUploadUser("admin"); 
                                orderFileuploadMapper.insert(record);
                                LOGGER.info("上传成功,orderNum:"+orderNum+",fileType:"+request.getParameter("uri")+",fileName:"+fileName);
                                OrderFileuploadExample example=new OrderFileuploadExample();
                                example.or().andOrderNumEqualTo(orderNum);
                                List<OrderFileupload>  listfile=orderFileuploadMapper.selectByExample(example);
                                Map<String,List<String>> map=new HashMap<String,List<String>>();
                                String ip= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
                                for(int j=0;j<listfile.size();j++){
                                    OrderFileupload file=listfile.get(j);
                                    if(map.containsKey(file.getFileType())){ 
                                        map.get(file.getFileType()).add(ip+file.getFileuri()+"/"+file.getFilename());
                                    }else{
                                        List<String> lists=new ArrayList<String>();
                                        lists.add(ip+file.getFileuri()+"/"+file.getFilename());
                                        map.put(file.getFileType(), lists);
                                    }
                                    
                                }
                                ResultDto dto=new ResultDto();
                                dto.setResultCode(Constant.CODE_ENUM.SUCCESS.code);
                                dto.setResultDetail(map); 
                                return om.writeValueAsString(dto);
                            } catch (Exception e) {
                                File file=new File(realpath, fileName);
                                if(file.exists()){
                                    FileUtils.deleteQuietly(file);
                                }
                                OrderFileuploadExample example=new OrderFileuploadExample();
                                example.or().andCreateDateEqualTo(date).andOrderNumEqualTo(orderNum);
                                orderFileuploadMapper.deleteByExample(example);
                                LOGGER.error("上传异常:",e);
                                continue;
                            }
                        }
                    }
                }
            }
            LOGGER.info("上传失败,orderNum:"+orderNum+",fileType:"+request.getParameter("uri"));
            return "0";
        }
        return "1";

     }
原文地址:https://www.cnblogs.com/younldeace/p/5337958.html