zoukankan      html  css  js  c++  java
  • 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";
    
         }
  • 相关阅读:
    assert用法,原理,改编(C++)
    使用临界段实现优化的进程间同步对象原理和实现 (转)
    去除表达式里面多余的()
    为什么C++编译器不能支持对模板的分离式编译
    python试题[转]
    从CSDN的趣味题学Python
    即时战略游戏中如何协调对象移动
    贪心算法精讲
    游戏引擎大全
    I/O 完成端口( Windows核心编程 )
  • 原文地址:https://www.cnblogs.com/younldeace/p/5337958.html
Copyright © 2011-2022 走看看