SpringBoot处理InputStream转换为MultipartFile

1.添加依赖

<dependency>
   <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

2.创建FileUtil

package com.gd.base.util;

import lombok.extern.log4j.Log4j2;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * @Auther: tangxl
 * @Date: 2021年12月24日11:34:57
 * @Description: TODO 文件工具类
 */
@Log4j2
public class FileUtil {
    /**
     * @Description TODO 字节输入流转换为包含二进制数据+文件名称的MultipartFile文件
     * @param fileName 文件名
     * @param inputStream 字节输入流
     * @return
     */
    public static MultipartFile inputStreamToMultipartFile(String fileName, InputStream inputStream) throws IOException {
        //该方法只能用于测试return new MockMultipartFile(fileName,fileName, MediaType.MULTIPART_FORM_DATA_VALUE,inputStream);
        FileItem fileItem = createFileItem(inputStream, fileName);
        //CommonsMultipartFile是feign对multipartFile的封装,但是要FileItem类对象
        return new CommonsMultipartFile(fileItem);
    }

    /**
     * FileItem类对象创建
     *
     * @param inputStream inputStream
     * @param fileName    fileName
     * @return FileItem
     */
    public static FileItem createFileItem(InputStream inputStream, String fileName) {
        FileItemFactory factory = new DiskFileItemFactory(16, null);
        String textFieldName = "file";
        FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName);
        int bytesRead = 0;
        byte[] buffer = new byte[10 * 1024 * 1024];
        OutputStream os = null;
        //使用输出流输出输入流的字节
        try {
            os = item.getOutputStream();
            while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            inputStream.close();
        } catch (IOException e) {
            log.error("Stream copy exception", e);
            throw new IllegalArgumentException("文件上传失败");
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    log.error("Stream close exception", e);

                }
            }
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    log.error("Stream close exception", e);
                }
            }
        }

        return item;
    }
}

注意:引用FileItem、FileItemFactory、DiskFileItemFactory包的时候,是选择org.apache.commons.fileupload的

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot中,你可以使用Apache POI库来读取和处理Microsoft Word文档(.doc或.docx文件),然后使用Java库进行HTML转换。 首先,确保在你的Spring Boot项目中引入Apache POI的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 接下来,你可以编写一个方法来处理上传的doc文档并将其转换为HTML。以下是一个简单的示例: ```java import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFWordExtractor; import java.io.*; public class DocumentConverter { public String convertDocToHtml(MultipartFile file) throws IOException { InputStream inputStream = file.getInputStream(); XWPFDocument document = new XWPFDocument(inputStream); XWPFWordExtractor extractor = new XWPFWordExtractor(document); // 提取文档内容 String content = extractor.getText(); extractor.close(); document.close(); // 将文档内容转换为HTML String htmlContent = "<html><body>" + content + "</body></html>"; return htmlContent; } } ``` 上述代码中,`MultipartFile`是Spring Framework中的一个类,用于处理上传的文件。在Spring Boot的控制器或服务类中,你可以调用`convertDocToHtml`方法并传递上传的文件,然后将返回的HTML内容用于显示或存储。 请注意,这只是一个简单的示例,将整个文档内容作为HTML返回。如果需要更复杂的转换,你可能需要使用更高级的库或进行额外的处理。 希望能帮到你!如果还有其他问题,请随时问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hippoDocker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值