当前位置: 首页 > 知识库问答 >
问题:

从url下载文件并将其上载到AWS S3而无需保存-node.js

章盛
2023-03-14

我正在编写一个应用程序,它从url下载图像,然后使用AWS-SDK将其上传到S3桶中。

以前,我只是下载图像并将它们保存到磁盘上,就像这样。

request.head(url, function(err, res, body){

    request(url).pipe(fs.createWriteStream(image_path));

});

然后像这样将图像上传到AWS S3

fs.readFile(image_path, function(err, data){
    s3.client.putObject({
        Bucket: 'myBucket',
        Key: image_path,
        Body: data
        ACL:'public-read'
    }, function(err, resp) {
        if(err){
            console.log("error in s3 put object cb");
        } else { 
            console.log(resp);
            console.log("successfully added image to s3");
        }
    });
});

但我想跳过将映像保存到磁盘的部分。有什么方法可以管道响应从请求(url)到一个变量,然后上传它吗?

共有2个答案

颛孙兴旺
2023-03-14

这就是我所做的工作,并且工作得很好:

null

const request = require('request-promise')
const AWS = require('aws-sdk')
const s3 = new AWS.S3()

const options = {
    uri: uri,
    encoding: null
};

async load() {

  const body = await request(options)
  
  const uploadResult = await s3.upload({
    Bucket: 'bucket_name',
    Key   : path,
    Body  : body,   
  }).promise()
  
}
韩单弓
2023-03-14

下面的javascript很好地实现了这一点:

    var options = {
        uri: uri,
        encoding: null
    };
    request(options, function(error, response, body) {
        if (error || response.statusCode !== 200) { 
            console.log("failed to get image");
            console.log(error);
        } else {
            s3.putObject({
                Body: body,
                Key: path,
                Bucket: 'bucket_name'
            }, function(error, data) { 
                if (error) {
                    console.log("error downloading image to s3");
                } else {
                    console.log("success uploading to s3");
                }
            }); 
        }   
    });
 类似资料:
  • 问题内容: 我正在编写一个应用程序,该应用程序从url下载图像,然后使用aws-sdk将其上传到S3存储桶。 以前,我只是下载图像并将其保存到磁盘中,就像这样。 然后像这样将图像上传到AWS S3 但是我想跳过将图像保存到磁盘的部分。有什么办法可以让我对一个变量进行响应,然后将其上传? 问题答案: 这是一些可以很好地做到这一点的javascript:

  • 我用ajax提交了一个表单,在表单提交后,我需要下载一个用php库MPDF在服务器端生成的pdf文件。我不想在服务器中保存pdf文件,因为在用户加载后,该文件不再需要了。我在谷歌上搜索过,有人建议使用Blob对象。我还返回一个json响应以显示给用户。有人能解释一下是否可能以及如何实现吗?多谢 cache-control public,必须重新验证,max-age=0连接 Keep-Alive内容

  • 问题内容: 我目前正在我的应用程序中显示视频,希望用户能够将其保存到其设备图库/相册照片/相机胶卷中。这就是我正在做的事情,但视频未保存在相册中:/ 我也调查这个: 但是我有错误“无法从文件创建数据(空)”。我的“ assetChangeRequest”为零。我不了解我的网址是有效的,并且当我使用浏览器访问它时,它会下载快速时间文件。 如果有人可以帮助我,将不胜感激!我正在使用Swift,并将iO

  • 问题内容: 好吧,这看起来很简单,确实如此。将文件下载到服务器所需要做的就是: 只有一个问题。如果文件很大,例如100mb,该怎么办?然后,您将耗尽内存,并且无法下载文件。 我想要的是一种在下载文件时将文件写入磁盘的方法。这样,我可以下载更大的文件,而不会遇到内存问题。 问题答案: 从PHP 5.1.0开始,支持通过传递流句柄作为参数来逐段编写: 从手册中: 如果 数据 [是第二个参数]是流资源,

  • 问题内容: 我必须使用下面给出的Selenium Webdriver执行以下任务。 单击任何开始下载任何文件的链接/按钮(文件类型可以是图像,pdf,jar等) 单击弹出窗口上的“保存”(如果显示)(例如http://selenium.googlecode.com/files/selenium-server-standalone-2.33.0.jar) 提供所需的位置以保存该文件。 任何人都可以共

  • 我有一个问题,连接两个不同的进程,我正在工作。我的任务是从数据库中提取数据,从数据中创建一个文件,然后将其上传到FTP服务器。 到目前为止,我已经使用以下代码创建并下载了文件,是包含完整文本文件的字符串: 当我只想在浏览器中运行脚本并下载文件,但我希望将其发送到FTP服务器时,这会起作用。 我知道我与FTP服务器的连接正常工作,并且我正确地导航到正确的目录,并且我已经从磁盘中提取了文件并使用将它们