Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取上传文件到S3的URL(上传文件后)_Javascript_Node.js_Amazon Web Services_Amazon S3 - Fatal编程技术网

Javascript 获取上传文件到S3的URL(上传文件后)

Javascript 获取上传文件到S3的URL(上传文件后),javascript,node.js,amazon-web-services,amazon-s3,Javascript,Node.js,Amazon Web Services,Amazon S3,给定一个链接,当用户点击该链接时,会下载PDF 我想把文件上传到S3,然后得到一个公开的AmazonS3URL(我不想让用户看到真正的链接,所以我宁愿上传到S3) 以代码为例: module.exports = class S3Uploader { uploadPdfFromURLToS3 = urlToUpload => { import aws from "aws-sdk"; const request = require("request"); const

给定一个链接,当用户点击该链接时,会下载PDF

我想把文件上传到S3,然后得到一个公开的AmazonS3URL(我不想让用户看到真正的链接,所以我宁愿上传到S3)

以代码为例:

module.exports = class S3Uploader {
  uploadPdfFromURLToS3 = urlToUpload => {
    import aws from "aws-sdk";
    const request = require("request");
    const s3 = new aws.S3();
    const config = require("config");
    var uuidv4 = require("uuid/v4");
    var filename = uuidv4() + ".pdf";

    aws.config.update({
      accessKeyId: config.get("-------------"),
      secretAccessKey: config.get("-----------------")
    });

    var promise = new Promise((resolve, reject) => {
      return request({ url: urlToUpload, encoding: null }, function(
        err,
        res,
        body
      ) {
        if (err) return reject({ status: 500, error: err });

        return resolve({ status: 200, body: body });
      });
    });

    promise.then(pdf => {
      if (pdf.status == 200) {

        s3.putObject(
          {
            Bucket: "-----Your-Bucket-Name",
            Body: pdf.body,
            Key: filename,
            ACL: "public-read"
          },
          (err, data) => {
            if (err) console.log(err);
            else 
            {
                console.log("uploaded");    
                // Get the S3 Public link ????
            }
          }
        );
      }
    });
  };
};

文件成功上传后,如何在回调中获取链接

您可以使用字符串连接来建立url


确保您使用的区域正确。

您可以使用字符串连接来建立url

确保您使用的区域正确。

您可以尝试在
控制台.log(“上载”)行中添加
$(data.Location)

console.log("uploaded. $(data.Location)");
您可以尝试在
控制台.log(“上载”)
行中添加
$(data.Location)

console.log("uploaded. $(data.Location)");

**试试这个**主要的变化在s3.putObject()中


**试试这个**主要的变化在s3.putObject()中


位置
未定义的
位置
未定义的
这是我在应用程序中如何做到的。目前最好的方法!这就是我在我的应用程序中所做的。目前最好的方法!