gpt4 book ai didi

java - 如何从 url 下载文件而不将其保存到磁盘?

转载 作者:行者123 更新时间:2023-12-02 01:37:59 29 4
gpt4 key购买 nike

我正在尝试从 URL 下载文件并将其上传到 AWS 中的 S3 存储桶。到目前为止,我最好的方法是将文件保存到磁盘中的临时文件夹中,并在上传到 S3 存储桶后将其删除。

我就是这样做的:

private File downloadFileFromUrl(String fileUrlToUpload) {
try {
URL url = new URL(fileUrlToUpload);
String tempDir = System.getProperty("java.io.tmpdir");
File file = new File(tempDir + FilenameUtils.getName(url.getPath()));
FileUtils.copyURLToFile(url, file);
return file;
} catch (IOException e) {
LOGGER.error("Could not download file from: {}!", fileUrlToUpload);
return null;
}
}

然后在调用downloadFileFromUrl方法的服务中上传文件后删除该文件。

但是,我正在寻找一种从 url 下载文件并将其直接上传到 S3 存储桶而不将其保存到磁盘的方法。我什至不确定这是否是更好的方法,但它似乎比将某些内容保存到磁盘更干净的解决方案。

我也愿意接受其他方法。谢谢!

最佳答案

在这种情况下,最好的方法可能是使用 AWS Signed URL上传和下载文件 - 而不是充当代理。

如果您坚持自己下载文件,可以执行以下操作:

BufferedInputStream bufferedInputStream = new BufferedInputStream(url.openStream());
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[1024];
while ((buffer = bufferedInputStream.read(buffer)) != -1) {
sb.append(new String(buffer));
}

sb - 包含文件的内容。

您还可以使用Apache Commons Lang :

IOUtils.toString(new InputStreamReader(url.openStream()));

关于java - 如何从 url 下载文件而不将其保存到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54923176/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com