java8:url下载并转为mutlipartfile

以下是更新后的代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import org.springframework.web.multipart.MultipartFile;

public class ApkDownloadAndUpload {

    public static void downloadAndUploadApk(String urlStr) {
        if (!isValidApkUrl(urlStr)) {
            System.out.println("Invalid URL. Only APK and RPK files are allowed.");
            return;
        }
        try {
            URL url = new URL(urlStr);
            URLConnection connection = url.openConnection();
            InputStream inputStream = connection.getInputStream();
            String originalFileName = getFileNameFromUrl(urlStr);
            File tempFile = File.createTempFile("temp", getExtension(urlStr), new File("tempFolder"));
            tempFile.renameTo(new File("tempFolder/" + originalFileName));
            OutputStream outputStream = new FileOutputStream(tempFile);
            byte[] buffer = new byte[4096];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer))!= -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            inputStream.close();
            outputStream.close();
            // 将临时文件转换为 MultipartFile 类型并调用已有的 uploadApk 方法
            uploadApk(toMultipartFile(tempFile));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static boolean isValidApkUrl(String urlStr) {
        String extension = getExtension(urlStr);
        return "apk".equalsIgnoreCase(extension) || "rpk".equalsIgnoreCase(extension);
    }

    public static String getExtension(String urlStr) {
        int dotIndex = urlStr.lastIndexOf('.');
        if (dotIndex!= -1 && dotIndex < urlStr.length() - 1) {
            return urlStr.substring(dotIndex + 1);
        }
        return "";
    }

    public static String getFileNameFromUrl(String urlStr) {
        int slashIndex = urlStr.lastIndexOf('/');
        if (slashIndex!= -1 && slashIndex < urlStr.length() - 1) {
            return urlStr.substring(slashIndex + 1);
        }
        return "unknownFile";
    }

    public static MultipartFile toMultipartFile(File file) throws IOException {
        return new MockMultipartFile(file.getName(), file.getName(), null, new FileInputStream(file));
    }

    public static void uploadApk(MultipartFile multipartFile) {
        // 这里是假设的 uploadApk 方法实现,实际中需根据具体情况实现
        System.out.println("Uploading apk file with name: " + multipartFile.getOriginalFilename());
    }
}
在这个版本中,添加了一个方法getFileNameFromUrl来从 URL 中提取文件名,并在创建临时文件后将其重命名为原始文件名,以保留原来的文件名。同时,指定了一个临时文件夹tempFolder来存放临时文件。请注意,在实际应用中,你可能需要根据实际情况调整临时文件夹的路径,并确保有足够的权限进行文件操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值