最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中File轉(zhuǎn)為MultipartFile的四種實(shí)現(xiàn)方式

 更新時(shí)間:2024年06月15日 10:04:44   作者:時(shí)間是一種解藥  
這篇文章主要介紹了java中File轉(zhuǎn)為MultipartFile的四種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問題背景

項(xiàng)目中需要調(diào)用別人的接口上傳一個(gè)文件,別人的接口參數(shù)為MultipartFile類型,需要對File文件進(jìn)行一個(gè)轉(zhuǎn)換再進(jìn)行上傳

File轉(zhuǎn)MultipartFile

1.方法一

public static MultipartFile getMultipartFile(File file) {
        FileItem item = new DiskFileItemFactory().createItem("file"
            , MediaType.MULTIPART_FORM_DATA_VALUE
            , true
            , file.getName());
        try (InputStream input = new FileInputStream(file);
            OutputStream os = item.getOutputStream()) {
            // 流轉(zhuǎn)移
            IOUtils.copy(input, os);
        } catch (Exception e) {
            throw new IllegalArgumentException("Invalid file: " + e, e);
        }

        return new CommonsMultipartFile(item);
    }

可以設(shè)置為靜態(tài)方法,也可以使用對象進(jìn)行調(diào)用

File file = new File("D:\\a.txt");
MultipartFile cMultiFile = getMultipartFile(file);

2.方法二

// 第二種方式
public static MultipartFile getMultipartFile(File file) {
        DiskFileItem item = new DiskFileItem("file"
            , MediaType.MULTIPART_FORM_DATA_VALUE
            , true
            , file.getName()
            , (int)file.length()
            , file.getParentFile());
        try {
            OutputStream os = item.getOutputStream();
            os.write(FileUtils.readFileToByteArray(file));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new CommonsMultipartFile(item);
    }

可以設(shè)置為靜態(tài)方法,也可以使用對象進(jìn)行調(diào)用

File file = new File("D:\\a.txt");
MultipartFile cMultiFile = getMultipartFile(file);

3.方法三

創(chuàng)建FileItem

    public static FileItem createFileItem(String filePath, String fileName){
        String fieldName = "file";
        FileItemFactory factory = new DiskFileItemFactory(16, null);
        FileItem item = factory.createItem(fieldName, "text/plain", false,fileName);
        File newfile = new File(filePath);
        int bytesRead = 0;
        byte[] buffer = new byte[8192];
        try (FileInputStream fis = new FileInputStream(newfile);
            OutputStream os = item.getOutputStream()) {
            while ((bytesRead = fis.read(buffer, 0, 8192))!= -1)
            {
                os.write(buffer, 0, bytesRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return item;
    }
File file = new File("D:\\a.txt");
FileItem fileItem = createFileItem(file.getPath(),file.getName());
MultipartFile cMultiFile = new CommonsMultipartFile(fileItem);

4.方法4

添加依賴

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
</dependency>
import org.springframework.mock.web.MockMultipartFile;

File file = new File("D:\\a.txt");
MultipartFile cMultiFile = new MockMultipartFile("file", file.getName(), null, new FileInputStream(file));

5.如果傳輸有點(diǎn)問題可能傳輸?shù)念愋陀悬c(diǎn)不同

MediaType.MULTIPART_FORM_DATA_VALUE

更改為

MediaType.TEXT_PLAIN_VALUE

總結(jié)

方法有很多,自己選一種合適的

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatisPuls多數(shù)據(jù)源操作數(shù)據(jù)源偶爾報(bào)錯(cuò)問題

    MyBatisPuls多數(shù)據(jù)源操作數(shù)據(jù)源偶爾報(bào)錯(cuò)問題

    這篇文章主要介紹了MyBatisPuls多數(shù)據(jù)源操作數(shù)據(jù)源偶爾報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • SpringMVC如何把后臺(tái)文件打印到前臺(tái)

    SpringMVC如何把后臺(tái)文件打印到前臺(tái)

    這篇文章主要介紹了SpringMVC如何把后臺(tái)文件打印到前臺(tái),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解

    Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解

    這篇文章主要介紹了Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • JPA @Basic單表查詢?nèi)绾螌?shí)現(xiàn)大字段懶加載

    JPA @Basic單表查詢?nèi)绾螌?shí)現(xiàn)大字段懶加載

    這篇文章主要介紹了JPA @Basic單表查詢?nèi)绾螌?shí)現(xiàn)大字段懶加載的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解Spring Boot Profiles 配置和使用

    詳解Spring Boot Profiles 配置和使用

    本篇文章主要介紹了詳解Spring Boot Profiles 配置和使用,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-06-06
  • Java for-each循環(huán)使用難題2例(高級使用方法)

    Java for-each循環(huán)使用難題2例(高級使用方法)

    從Java5起,在Java中有了for-each循環(huán),可以用來循環(huán)遍歷collection和array。For each循環(huán)允許你在無需保持傳統(tǒng)for循環(huán)中的索引,或在使用iterator /ListIterator時(shí)無需調(diào)用while循環(huán)中的hasNext()方法就能遍歷collection
    2014-04-04
  • Java多線程死鎖示例

    Java多線程死鎖示例

    這篇文章主要介紹了Java多線程死鎖,結(jié)合實(shí)例形式分析了Java多線程出現(xiàn)死鎖的相關(guān)原因與操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • 利用SpringBoot實(shí)現(xiàn)一個(gè)基于本地代理模式的RPC調(diào)用框架

    利用SpringBoot實(shí)現(xiàn)一個(gè)基于本地代理模式的RPC調(diào)用框架

    雖然Dubbo、gRPC等成熟框架已經(jīng)為我們提供了完整的RPC解決方案,但理解其底層原理并動(dòng)手實(shí)現(xiàn)一個(gè)簡化版本,對提升我們的技術(shù)理解深度很有幫助,下面我們就來看看如何使用SpringBoot實(shí)現(xiàn)一個(gè)基于本地代理模式的RPC調(diào)用框架吧
    2025-07-07
  • Java多線程Thread基礎(chǔ)學(xué)習(xí)

    Java多線程Thread基礎(chǔ)學(xué)習(xí)

    每一個(gè)正在執(zhí)行的程序都是一個(gè)進(jìn)程,資源只有一塊,所以在同一時(shí)間段會(huì)有多個(gè)程序同時(shí)執(zhí)行,但是在一個(gè)時(shí)間點(diǎn)上,只能由一個(gè)程序執(zhí)行,多線程是在一個(gè)進(jìn)程的基礎(chǔ)之上的進(jìn)一步劃分,需要的朋友可以參考下
    2023-04-04
  • Java?Thread?類和Runnable?接口詳解

    Java?Thread?類和Runnable?接口詳解

    這篇文章主要介紹了Java?Thread?類和Runnable接口詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08

最新評論

资中县| 内丘县| 博湖县| 宣汉县| 马龙县| 商丘市| 溆浦县| 吴江市| 阿鲁科尔沁旗| 涟源市| 建始县| 家居| 禹州市| 盐亭县| 汤阴县| 铜川市| 乐昌市| 玛曲县| 金溪县| 和静县| 辽中县| 泌阳县| 木兰县| 太湖县| 宁乡县| 鸡东县| 福安市| 丹东市| 通榆县| 黑山县| 虎林市| 阿合奇县| 咸阳市| 大关县| 阳春市| 肥西县| 无锡市| 普兰店市| 泗阳县| 靖边县| 津市市|