上传文件到远程文件服务器

@RequestMapping("/fileUpload.html")
    @ResponseBody
    public Map webUploadFile(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "sampleMap") String sampleMap, @RequestParam(value = "dataMap") String dataMap, @RequestParam(value = "caseId") String caseId, @RequestParam(value = "code") String code, @RequestParam(value = "caseSn") String caseSn) {
        caseSn = caseSn.replace(" ", "");
        JSONObject jb = JSONObject.fromObject(dataMap);
        JSONObject sampleMsg = JSONObject.fromObject(sampleMap);
        Map<String, String> depictMap = (Map) jb;
        Map<String, String> samMap = (Map) sampleMsg;
        DacasCaseFile dacasCaseFile = new DacasCaseFile();
        DacasSampleFile dacasSampleFile = new DacasSampleFile();
        boolean flag = true;
        Map<String, Object> map = new HashMap<>();
        //创建一个通用的多部分解析器
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        try {
            //判断 request 是否有文件上传,即多部分请求
            if (multipartResolver.isMultipart(request)) {
                //转换成多部分request
                MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
                //取得request中的所有文件名
                Iterator<String> iter = multiRequest.getFileNames();
                String filePath = FileUtils.getProperties("/filePath.properties", "fileServerPath");//文件服务器对应的初始文件夹路径
                String fileHost = FileUtils.getProperties("/filePath.properties", "fileServerHost");//文件服务器的IP加端口
                //20190517创建图片分类文件夹
                String pathMk = FileUtils.uploadToServer(fileHost, filePath, caseSn, "images");
                while (iter.hasNext()) {
                    //取得上传文件
                    MultipartFile file = multiRequest.getFile(iter.next());
                    if (file != null) {
                        //取得当前上传文件的文件名称
                        String myFileName = file.getOriginalFilename();
                        //如果名称不为“”,说明该文件存在,否则说明该文件不存在
                        if (myFileName.trim() != "") {
                            String dateStr = DateUtils.dateToString(new Date(), "yyyyMMddhhmmss");
                            String fileName = dateStr + myFileName;
                            //定义上传路径
                            try {
                                byte[] fileByte = file.getBytes();
                                //20190517将上传的文件传到文件服务器新创建的分类文件夹中
                                HttpUtils.doPut(fileHost, pathMk, fileName, fileByte);
                             
                            } catch (IllegalStateException e) {
                                e.printStackTrace();
                                map.put("code", 1);
                                return map;
                            }
                           
                        }
                    }
                }
            }
            

        } catch (Exception e) {
            e.printStackTrace();
            map.put("code", 1);
            return map;
        }
        map.put("code", 0);
        return map;
    }

 

/**
     * 创建文件对应的分类文件夹
     * @param fileHost 远程文件服务器的IP和端口
     * @param filePath 文件服务器的文件存放的基础访问路径
     * @param fileType 例:images
     */
    public static String uploadToServer(String fileHost,String filePath,String fileType){
        String pathMk = filePath + "/"+fileType;
        try {
            HttpUtils.doMkcol(fileHost, pathMk);//创建图片分类文件夹
        } catch (Exception e) {
            e.printStackTrace();
        }
        return pathMk;
    }
/**
     * Put stream
     * @param host
     * @param path
     * @return
     * @throws Exception
     */
    public static HttpResponse doMkcol(String host, String path)
            throws Exception {
        HttpClient httpClient = wrapClient(host);
        HttpMkcol httpMkcol = new HttpMkcol(buildUrl(host, path, null));
        return httpClient.execute(httpMkcol);
    }

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值