美文网首页
通过路径下载文件并重新上传

通过路径下载文件并重新上传

作者: 来日可期M | 来源:发表于2018-07-02 17:54 被阅读0次

今天有一个需求,给一个pdf的url,然后下载下来请求令一个服务得到新路径。

代码如下:

第一步 下载文件

        String urlStr = "https://***pdf";
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        //设置超时间为3秒
        conn.setConnectTimeout(5*1000);
        //防止屏蔽程序抓取而返回403错误
        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //得到输入流
        InputStream inputStream = conn.getInputStream();

第二步 转换成MultipartFile

        MultipartFile multipartFile = new MockMultipartFile("leaseFile", inputStream);

第三步 发送上传文件的请求

        HashMap<String, String> header = new HashMap<>();
        header.put("Authorization","token");
        HttpUtil.postFile(controllerPath,multipartFile,header,"xxx.pdf");

postFile 工具类

    public static void postFile(String url, MultipartFile excelFile, HashMap<String, String> headers, String fileName) {

        CloseableHttpClient httpClient = HttpClients.createDefault();

        try {
            //System.out.println("--->"+excelFile.getOriginalFilename());
            HttpPost httpPost = new HttpPost(url);
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.addBinaryBody("leaseFile", excelFile.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
            builder.addTextBody("filename", fileName);// 类似浏览器表单提交,对应input的name和value
            HttpEntity entity = builder.build();
            httpPost.setEntity(entity);
            Set<Map.Entry<String, String>> headerSet = headers.entrySet();
            for (Map.Entry<String, String> headerEntry : headerSet) {
                String key = headerEntry.getKey();
                String value = headerEntry.getValue();
                httpPost.setHeader(key, value);
            }

            HttpResponse response  = httpClient.execute(httpPost);// 执行提交
            //System.out.println("postFile---response--->"+response);
            int statusCode =0;
            for (int i = 0; i < 3; i++) {
                try {
                    statusCode = response.getStatusLine().getStatusCode();
                    System.out.println("postFile---statusCode---> "+statusCode);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                if (statusCode== HttpStatus.SC_OK) { // 打印服务器返回的状态
                    break;
                } else {

                    Thread.sleep(1000);
                }
            }
            HttpEntity responseEntity = response.getEntity();
            //System.out.println("postFile---responseEntity--->"+responseEntity);
            if (responseEntity != null) {
                // 将响应内容转换为字符串
                String result  = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
                System.out.println("postFile---result---> "+result);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                httpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

部分摘抄于 博客园

相关文章

  • 常用命令

    文件上传与下载 上传:scp 文件路径 用户名@主机IP:上传路径 下载:scp 用户名@主机IP:文件路径 保存...

  • elasticsearch中Logstash数据同步

    一、安装 1、下载 官网下载,版本与es保持一致 将文件上传服务器并解压 我解压后的文件路径 2、配置通过文件 在...

  • 通过路径下载文件并重新上传

    今天有一个需求,给一个pdf的url,然后下载下来请求令一个服务得到新路径。 代码如下: 第一步 下载文件 第二步...

  • 上传svn之后,再下载出来缺少文件

    我的项目上传之后却少了.a文件 重新上传,下载即可。

  • OSS上传文件之上传文件路径

    下载了oss的.net-SDK,把dll扔进项目中调试上传文件,报错提示文件路径不可用,将上传文件的路径改为App...

  • AFNetworking 3.X 简单使用

    一、网络请求: GET方式: POST方式: 二、文件上传: 通过工程中的文件上传 根据URL路径上传 三、文件下...

  • Spring boot 基于ajax 文件上传下载

    1.配置静态文件访问路径 2.配置文件上传大小 3.多文件上传接口,下载文件接口 4.文件上传工具类 5.文件上传页面

  • debian简单的上传下载命令

    首先安装 apt-get install lrzsz 上传rz 下载sz 文件路径

  • 2019-02 Pyspark 初探

    0. 安装及环境   a. 下载JDK并设置环境路径 (官网下载pkg文件)  b. 下载Spark并设置环境路径...

  • django-文件上传

    文件上传的思路: 文件上传:是否有文件进行判断 如果有:给文件一个上传路径,并利用uuid生成一个新的名字,与上传...

网友评论

      本文标题:通过路径下载文件并重新上传

      本文链接:https://www.haomeiwen.com/subject/cwiluftx.html