项目需求--将文件(html格式的字符串)转换为MultipartFile格式的文件然后转调第三方接口

网上看了很多,但是不符合需求不说,还有很多都不能用。。。。自己就整理了下相关的代码,可能会有点乱,自己理解着看

根据url地址将文件转换成MultipartFile格式的文件

/**
    * @description: 根据url地址读取文件并转为MultipartFile格式
    * @param:  url 文件地址
    * @param:  fileName  文件名
    * @return: MultipartFile格式的文件
    * @author 拥有盛世美颜的芳心纵火犯----ym
    * @date: 2022/6/16 9:46
    */
    public static MultipartFile urlToMultipartFile(String url,String fileName) throws Exception {
        File file = null;
        MultipartFile multipartFile = null;
        try {
            HttpURLConnection httpUrl = (HttpURLConnection) new URL(url).openConnection();
            httpUrl.connect();
            file = inputStreamToFile(httpUrl.getInputStream(),fileName);
            multipartFile = fileToMultipartFile(file);
            httpUrl.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return multipartFile;
    }
    public static File inputStreamToFile(InputStream ins, String name) throws Exception {
        File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name);
        OutputStream os = new FileOutputStream(file);
        int len = 8192;
        byte[] buffer = new byte[len];
        int bytesRead;
        while ((bytesRead = ins.read(buffer, 0, len)) != -1){
            os.write(buffer, 0, bytesRead);
        }
        os.close();
        ins.close();
        return file;
    }
    public static MultipartFile fileToMultipartFile(File file) {
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
        FileItem item = diskFileItemFactory.createItem(file.getName(), "multipart/form-data", true, file.getName());
        int bytesRead = 0;
        byte[] buffer = new byte[8192];
        try {
            FileInputStream fis = new FileInputStream(file);
            OutputStream os = item.getOutputStream();
            int len = 8192;
            while ((bytesRead = fis.read(buffer, 0, len)) != -1){
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return (MultipartFile)new CommonsMultipartFile(item);
    }

同理利用file的io流读取文件(这里我的需求是将html页面转成的字符串,转成MultipartFile格式)也可以转MultipartFile格式的文件,然后结合上面的fileToMultipartFile方法转一下

public File stringToFile(String str,String name) throws Exception {
        ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes());
        File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name);
        OutputStream os = new FileOutputStream(file);
        int len = 8192;
        byte[] buffer = new byte[len];
        int bytesRead;
        while ((bytesRead = stream.read(buffer, 0, len)) != -1){
            os.write(buffer, 0, bytesRead);
        }
        os.close();
        stream.close();
        return file;
    }

再一个就是根据url地址,将html文件转为字符串储存

/**
    * @description: 先获取注册协议,然后通过url读取html转为字符串
    * @author 拥有盛世美颜的芳心纵火犯----ym
    * @date 2022/6/16 9:35
    * @version 1.0
    */
    public String getRegisterAgreement(String htmlUrl) {
        String Str = "";
        try {
            URL url = new URL(htmlUrl);
            URLConnection conn = url.openConnection();
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine ;

            while ((inputLine = br.readLine()) != null) {
                //将读取到的字符拼接
                Str += inputLine;
            }
            br.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Str ;
    }

大致就是这样,加油!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java第三方库,如ImageIO或Thumbnails来实现MultipartFile文件格式转换为webp。下面是一个使用Thumbnails库的示例代码: ```java import net.coobird.thumbnailator.Thumbnails; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayOutputStream; import java.io.IOException; public class WebpConverter { public static byte[] convertToWebp(MultipartFile file) throws IOException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); Thumbnails.of(file.getInputStream()) .outputFormat("webp") .toOutputStream(outputStream); return outputStream.toByteArray(); } } ``` 在上面的示例中,我们使用Thumbnails库将MultipartFile对象转换为webp格式。首先,我们创建一个ByteArrayOutputStream对象来保存转换后的图像数据。然后,我们使用Thumbnails.of()方法传入MultipartFile的输入流,设置输出格式为webp,并使用toOutputStream()方法将转换后的图像数据写入ByteArrayOutputStream。最后,我们通过调用toByteArray()方法将ByteArrayOutputStream转换为字节数组,并返回结果。 请注意,你需要将Thumbnails库添加到你的项目依赖中。你可以在构建工具(如Maven或Gradle)的配置文件中添加以下依赖项: ```xml <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.14</version> </dependency> ``` 这是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。希望能对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值