【问题标题】:How to download files and store them to s3 by nodejs (through heroku)?如何通过nodejs(通过heroku)下载文件并将它们存储到s3?
【发布时间】:2019-11-30 01:27:45
【问题描述】:

我想知道如何通过heroku将文件下载到aws-s3,并且不使用网页。

我在 Nodejs 中使用 wget 下载音频文件,并希望通过 ffmpeg 重新编码它们。虽然我必须先存储文件,但 heroku 没有提供存储空间。 然后我找到heroku可以连接aws-s3的方式,但是示例代码是用户上传的页面,我只是想使用代码。

这是还没有和s3连接的代码。

  const wget = spawn('wget',['-O', 'upload_audio/'+ sender_psid +'.aac', audioUrl]);
  //spit stdout to screen
  wget.stdout.on('data', function (data) { process.stdout.write(data.toString()); });
  // //spit stderr to screen
  wget.stderr.on('data', function (data) { process.stdout.write(data.toString()); });

  wget.on('close', function (code) {

    console.log(process.env.PATH);
    const ffmpeg = spawn('ffmpeg',['-i', 'upload_audio/'+ sender_psid +'.aac', '-ar', '16000', 'upload_audio/'+ sender_psid +'.wav', '-y']);

...

});

它来了错误:

upload_audio/1847432728691358.aac: No such file or directory
...
Error: ENOENT: no such file or directory, open 'upload_audio/1847432728691358.wav'

我该如何解决这个问题? 有人可以给一些建议吗? 也许不会使用 s3 可以得到它?

【问题讨论】:

  • 这是一个问题吗?答案不是很明显吗? No such file or directory - 错误很容易解释,是不是还是我遗漏了什么?
  • 您好,感谢您的评论。因为这是在 Heroku 上运行的,所以无论我创建文件夹,它都无法工作。
  • 那么,如果您创建文件夹但下载失败,我认为您的创建似乎有缺陷。
  • 我认为这是因为 heroku 没有提供存储文件的空间。现在我将尝试连接 aws-s3 空间,但我找不到任何示例代码。

标签: javascript node.js heroku amazon-s3


【解决方案1】:

在您尝试过 NodeJS 静态文件 API 之前,我不建议您使用 S3。在服务器上,如下所示:

app.use(express.static(path.join(__dirname, 'my_audio_files_folder')));

More on NodeJS's Static Files API available here.

AWS S3 似乎增加了不必要的复杂性,但如果您有心,have a look at this thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多