java方式上傳文件

zhaizi:https://www.cnblogs.com/foxting/p/7895724.html

Java可以使用HttpClient發送Http請求、上傳文件等,非常的方便

Maven

 

?

1

2

3

4

5

6

7

8

9

10

<dependency>

    <groupId>org.apache.httpcomponents</groupId>

    <artifactId>httpclient</artifactId>

    <version>4.5.3</version>

</dependency>

<dependency>

    <groupId>org.apache.httpcomponents</groupId>

    <artifactId>httpmime</artifactId>

    <version>4.5.3</version>

</dependency>

上傳代碼1:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

public static void upload2() throws ClientProtocolException, IOException{

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    CloseableHttpResponse httpResponse = null;

    RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000000).build();

    HttpPost httpPost = new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receiveFile.html");

    httpPost.setConfig(requestConfig);

    MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();

    //multipartEntityBuilder.setCharset(Charset.forName("UTF-8"));

         

    //File file = new File("F:\\Ken\\1.PNG");

    //FileBody bin = new FileBody(file); 

         

    File file = new File("F:\\Ken\\abc.pdf");

          

    //multipartEntityBuilder.addBinaryBody("file", file,ContentType.create("image/png"),"abc.pdf");

    //當設置了setSocketTimeout參數後,以下代碼上傳PDF不能成功,將setSocketTimeout參數去掉後此可以上傳成功。上傳圖片則沒有個限制

    //multipartEntityBuilder.addBinaryBody("file",file,ContentType.create("application/octet-stream"),"abd.pdf");

    multipartEntityBuilder.addBinaryBody("file",file);

    //multipartEntityBuilder.addPart("comment", new StringBody("This is comment", ContentType.TEXT_PLAIN));

    multipartEntityBuilder.addTextBody("comment", "this is comment");

    HttpEntity httpEntity = multipartEntityBuilder.build();

    httpPost.setEntity(httpEntity);

         

    httpResponse = httpClient.execute(httpPost);

    HttpEntity responseEntity = httpResponse.getEntity();

    int statusCode= httpResponse.getStatusLine().getStatusCode();

    if(statusCode == 200){

        BufferedReader reader = new BufferedReader(new InputStreamReader(responseEntity.getContent()));

        StringBuffer buffer = new StringBuffer();

        String str = "";

        while(!StringUtil.isRealEmpty(str = reader.readLine())) {

            buffer.append(str);

        }

             

        System.out.println(buffer.toString());

    }

         

    httpClient.close();

    if(httpResponse!=null){

        httpResponse.close();

    }

     

}

上傳代碼2:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

public static void upload() { 

       CloseableHttpClient httpclient = HttpClients.createDefault(); 

       //CloseableHttpClient httpclient = HttpClientBuilder.create().build();

       try

           HttpPost httppost = new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receiveFile.html"); 

  

           RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000).build();

           httppost.setConfig(requestConfig);

            

           FileBody bin = new FileBody(new File("F:\\Ken\\abc.pdf")); 

           StringBody comment = new StringBody("This is comment", ContentType.TEXT_PLAIN); 

  

           HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("file", bin).addPart("comment", comment).build(); 

  

           httppost.setEntity(reqEntity); 

  

           System.out.println("executing request " + httppost.getRequestLine()); 

           CloseableHttpResponse response = httpclient.execute(httppost); 

           try

               System.out.println(response.getStatusLine()); 

               HttpEntity resEntity = response.getEntity(); 

               if (resEntity != null) { 

                   String responseEntityStr = EntityUtils.toString(response.getEntity());

                   System.out.println(responseEntityStr);

                   System.out.println("Response content length: " + resEntity.getContentLength()); 

               

               EntityUtils.consume(resEntity); 

           } finally

               response.close(); 

           

       } catch (ClientProtocolException e) { 

           e.printStackTrace(); 

       } catch (IOException e) { 

           e.printStackTrace(); 

       } finally

           try

               httpclient.close(); 

           } catch (IOException e) { 

               e.printStackTrace(); 

           

       

   }

普通POST請求

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

public String post() throws ClientProtocolException, IOException{

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    CloseableHttpResponse httpResponse = null;

    HttpPost httpPost = new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receivePost.html");

    RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(20000).setSocketTimeout(22000).build();

    httpPost.setConfig(requestConfig);

    List<NameValuePair> params = new ArrayList<NameValuePair>();

    params.add(new BasicNameValuePair("user.loginId", "Lin"));

    params.add(new BasicNameValuePair("user.employeeName","令狐沖"));

    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params,Charset.forName("UTF-8"));

    httpPost.setEntity(entity);

    httpResponse = httpClient.execute(httpPost);

    HttpEntity responseEntity = httpResponse.getEntity();

    if(responseEntity!=null){

        String content = EntityUtils.toString(responseEntity,"UTF-8");

        System.out.println(content);

    }

         

    if(httpResponse!=null){

        httpResponse.close();

    }

    if(httpClient!=null){

        httpClient.close();

    }

    return null;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章