欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java后臺本地文件轉(zhuǎn)為MultipartFile類型的實現(xiàn)方式

 更新時間:2025年02月13日 09:35:20   作者:探索途中的碼農(nóng)  
在Java后臺將本地文件轉(zhuǎn)換為MultipartFile類型,可以通過使用FileItemFactory創(chuàng)建FileItem,然后使用CommonsMultipartFile類構(gòu)造一個MultipartFile對象,將本地文件流轉(zhuǎn)換為MultipartFile,getMultipartFiles()和getMultipartFiles()方法

java后臺本地文件轉(zhuǎn)為MultipartFile類型

前端上傳文件轉(zhuǎn)為MultipartFile類型,java后臺通過springmvc接收自動轉(zhuǎn)換處理就不用多說了。

現(xiàn)在需要在后臺java代碼里將本地文件轉(zhuǎn)換為MultipartFile類型如何處理呢?

如下代碼

主要利用FileItemFactory創(chuàng)建FileItem,MultipartFile的實現(xiàn)類CommonsMultipartFile構(gòu)造一個對象,將本地讀取的文件流轉(zhuǎn)換為MultipartFile。

getMultipartFiles()和getMultipartFiles()支持一個文件的轉(zhuǎn)換和多個文件的轉(zhuǎn)換。

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
import java.io.*;
 
public class MultipartFileTest {
 
    private static final Logger log = LoggerFactory.getLogger(MultipartFileTest.class);
 
    private MultipartFileTest() { }
 
 
    public static void main(String[] args) {
        // 本地文件轉(zhuǎn)為MultipartFile類型
        try{
            InputStream fis = new FileInputStream("E:\\tool\\20230102word.doc");
            MultipartFileTest.getMultipartFile(fis, "20230102word.doc");
        }catch (FileNotFoundException e){
            log.error("FileNotFoundException exception", e);
            throw new RuntimeException("文件不存在");
        }
    }
 
    public static MultipartFile getMultipartFile(InputStream inputStream, String fileName) {
        FileItem fileItem = createFileItem(inputStream, fileName);
        return new CommonsMultipartFile(fileItem);
    }
 
 
    public static MultipartFile[] getMultipartFiles(InputStream[] inputStream, String fileName) {
        // 多文件轉(zhuǎn)換
        int length = inputStream.length;
        MultipartFile[] multipartFiles = new MultipartFile[length];
        for (int i = 0; i < length; i++) {
            FileItem fileItem = createFileItem(inputStream[i], fileName);
            multipartFiles[i] = new CommonsMultipartFile(fileItem);
        }
        return multipartFiles;
    }
 
 
    public static FileItem createFileItem(InputStream inputStream, String fileName) {
        FileItemFactory factory = new DiskFileItemFactory(16, null);
        FileItem fileItem = factory.createItem("file", MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName);
        int read = 0;
        OutputStream os = null;
        byte[] buffer = new byte[10 * 1024 * 1024];
        try {
            os = fileItem.getOutputStream();
            while ((read = inputStream.read(buffer, 0, 4096)) != -1) {
                os.write(buffer, 0, read);
            }
            inputStream.close();
        } catch (IOException e) {
            log.error("os write exception", e);
            throw new IllegalArgumentException("文件流輸出失敗");
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    log.error("stream os close exception", e);
                }
            }
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    log.error("stream inputStream close exception", e);
                }
            }
        }
        return fileItem;
    }
}

總結(jié)

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

相關(guān)文章

  • Java中如何取出String字符串括號中的內(nèi)容

    Java中如何取出String字符串括號中的內(nèi)容

    這篇文章主要介紹了Java中如何取出String字符串括號中的內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • SpringBoot應(yīng)用線上重啟腳本的命令詳解

    SpringBoot應(yīng)用線上重啟腳本的命令詳解

    這篇文章主要介紹了SpringBoot應(yīng)用線上重啟腳本,通過查找應(yīng)用進程PID,殺死應(yīng)用進程PID,運行啟動腳本,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Java double轉(zhuǎn)BigDecimal的注意事項說明

    Java double轉(zhuǎn)BigDecimal的注意事項說明

    這篇文章主要介紹了Java double轉(zhuǎn)BigDecimal的注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Mybatis一級緩存和結(jié)合Spring Framework后失效的源碼探究

    Mybatis一級緩存和結(jié)合Spring Framework后失效的源碼探究

    這篇文章主要介紹了Mybatis一級緩存和結(jié)合Spring Framework后失效的源碼探究,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Spring Boot集成MyBatis的方法

    Spring Boot集成MyBatis的方法

    今天小編就為大家分享一篇關(guān)于Spring Boot集成MyBatis的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • tio-boot整合hotswap-classloader實現(xiàn)熱加載方法實例

    tio-boot整合hotswap-classloader實現(xiàn)熱加載方法實例

    這篇文章主要為大家介紹了tio-boot整合hotswap-classloader實現(xiàn)熱加載方法實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Java開發(fā)到底為什么要用 IoC 和 AOP

    Java開發(fā)到底為什么要用 IoC 和 AOP

    這篇文章主要介紹了Java開發(fā)到底為什么要用 IoC 和 AOP,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Java獲取resources下文件路徑的幾種方法及遇到的問題

    Java獲取resources下文件路徑的幾種方法及遇到的問題

    這篇文章主要給大家介紹了關(guān)于Java獲取resources下文件路徑的幾種方法及遇到的問題,在Java開發(fā)中經(jīng)常需要讀取項目中resources目錄下的文件或獲取資源路徑,需要的朋友可以參考下
    2023-12-12
  • 淺談Java 繼承接口同名函數(shù)問題

    淺談Java 繼承接口同名函數(shù)問題

    這篇文章主要介紹了淺談Java 繼承接口同名函數(shù)問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java中兩種基本的輸入方式小結(jié)

    Java中兩種基本的輸入方式小結(jié)

    這篇文章主要介紹了Java中兩種基本的輸入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論