Spring boot file upload and file transfer

Spring boot file upload and file transfer
development process should not be separated from the file upload this off of it
   such as: instant messaging and a variety of social networking sites, ah, to pay attention to their people, and to better introduce himself to others, avatar upload, financial systems think people think of financial excel excel all day and dealing with excel upload batch data
so Spring boot inside how to achieve file upload it? And if you just do a transit point for file upload and the target server is in another place?

Newly introduced package

[XML]  plain text view  Copy the code

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

<dependency>

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

            <artifactId>httpmime</artifactId>

            <version>4.5.10</version>

        </dependency>

        <dependency>

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

            <artifactId>httpclient</artifactId>

            <version>4.5.10</version>

        </dependency>

  

        <!-- [url]https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient[/url] -->

  

        <dependency>

            <groupId>commons-fileupload</groupId>

            <artifactId>commons-fileupload</artifactId>

            <version>1.3.1</version>

        </dependency>


File transfer utility classes

[Java]  plain text view  Copy the code

?

01

02

03

04

05

06

07

08

09

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

44

45

46

47

48

49

50

package com.example.demo.util;

  

import java.io.IOException;

import java.nio.charset.Charset;

  

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.ContentType;

import org.apache.http.entity.mime.MultipartEntityBuilder;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

import org.springframework.web.multipart.MultipartFile;

  

  

public class HttpClientUtil {

  

    public static String httpClientUploadFile(String url,MultipartFile file) {

//        String remote_url = url;// 第三方服务器请求地址

        CloseableHttpClient httpClient = HttpClients.createDefault();

        String result = "";

        try {

            String fileName = file.getOriginalFilename();

            HttpPost httpPost = new HttpPost(url);

            MultipartEntityBuilder builder = MultipartEntityBuilder.create();

            builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流

            builder.addTextBody("type", "2");// 类似浏览器表单提交,对应input的name和value

            HttpEntity entity = builder.build();

            httpPost.setEntity(entity);

            HttpResponse response = httpClient.execute(httpPost);// 执行提交

            HttpEntity responseEntity = response.getEntity();

            if (responseEntity != null) {

                // 将响应内容转换为字符串

                result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));

            }

        } catch (IOException e) {

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            try {

                httpClient.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        return result;

    }

}

 

[Java]  plain text view  Copy the code

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

package com.example.demo.config;

  

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.multipart.commons.CommonsMultipartResolver;

  

@Configuration

public class ConfigBean {

  

    @Bean

    public CommonsMultipartResolver multipartResolver(){

        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();

        multipartResolver.setDefaultEncoding("UTF-8");

        multipartResolver.setMaxUploadSize(104857600);

        multipartResolver.setMaxInMemorySize(40960);

        return multipartResolver;

    }

}

 

[Java]  plain text view  Copy the code

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

@RequestMapping(value = "/uploadFile/upload", method = RequestMethod.POST)

    @ResponseBody

    public String upload(@RequestParam(value = "file") MultipartFile file) {

        if (file.isEmpty()) {

            return "上传失败,请选择文件";

        }

        String filename = UUID.randomUUID().toString();

        String suffix = "";

        String originalFilename = file.getOriginalFilename();

        // 截取文件的后缀名

        if (originalFilename.contains(".")) {

            suffix = originalFilename.substring(originalFilename.lastIndexOf("."));

        }

        String fileName = filename + suffix;

        String filePath = "D:\\A\\B\\D\\";

        File dest = new File(filePath + fileName);

        try {

            file.transferTo(dest);

            return "上传成功";

        } catch (IOException e) {

        }

        return "上传失败!";

    }

  

    @RequestMapping(value = "/uploadFile/uploadPermanent", method = RequestMethod.POST)

    @ResponseBody

    public String uploadPermanent(@RequestParam(value = "file") MultipartFile file) {

        String url = "http://192.168.1.56:9090";

        String ss= HttpClientUtil.httpClientUploadFile(url+"/uploadFile/upload",file);

        return ss;

    }




Figure it shows file upload has been good 


here, surrounded twice, once to the transit method is a method to the target, of course, there is a transit and destination servers to be written together, but the scene is to meet the conditions of transit
of course there are many ways to help us do these

More java learning materials may be concerned about: itheimaGZ get

Published 731 original articles · won praise 3 · Views 110,000 +

Guess you like

Origin blog.csdn.net/u010395024/article/details/104813687
Recommended