根据URL地址动态加载URL返回的文件信息将返回的文件转变为MultipartFile对象

/**
 * @author BNTang
 * @date Created in 2020/12/1 19:49
 * @description 根据URL地址动态加载URL返回的文件信息
 */
public class DownloadUrlFileUtils {

    /**
     * 将 url 返回的文件转变为 MultipartFile对象
     *
     * @param url      地址
     * @param fileName 文件名称
     * @return 转换结果
     */
    public static MultipartFile createFileItem(String url, String fileName) {
        FileItem item = null;
        try {
            HttpURLConnection conn = (HttpURLConnection) new URL(url + "/" + fileName).openConnection();
            conn.setReadTimeout(30000);
            conn.setConnectTimeout(30000);

            // 设置应用程序要从网络连接读取数据
            conn.setDoInput(true);
            conn.setRequestMethod("GET");

            if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream is = conn.getInputStream();

                FileItemFactory factory = new DiskFileItemFactory(16, null);

                String textFieldName = "downloadFile";

                item = factory.createItem(textFieldName, ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
                OutputStream os = item.getOutputStream();

                int bytesRead;
                byte[] buffer = new byte[OperatingUnsoldConstant.READ_SIZE];
                while ((bytesRead = is.read(buffer, OperatingUnsoldConstant.ZERO, OperatingUnsoldConstant.READ_SIZE)) != -1) {
                    os.write(buffer, OperatingUnsoldConstant.ZERO, bytesRead);
                }
                os.close();
                is.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("file download error");
        }

        if (item != null) {
            return new CommonsMultipartFile(item);
        }
        return null;
    }
}
posted @   BNTang  阅读(1217)  评论(5编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示