javascript - 如何通过nodejs(通过heroku)下载文件并将它们存储到s3?
问题描述
我想知道如何通过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 可以得到它?
解决方案
在您尝试过 NodeJS 静态文件 API 之前,我不建议您使用 S3。在服务器上,它看起来像这样:
app.use(express.static(path.join(__dirname, 'my_audio_files_folder')));
有关 NodeJS 的静态文件 API 的更多信息,请点击此处。
AWS S3 似乎增加了不必要的复杂性,但如果您有心,请查看此线程。
推荐阅读
- c# - 如何在不丢失数据的情况下在两个页面之间切换:WPF、C#
- javascript - 我正在为 Javascript Promise 苦苦挣扎
- android - KOTLIN:Glide 图像未从 Firebase-Storage 加载到片段中
- python - Selenium 无法访问 Youtube 搜索栏?
- zeromq - 如何在 jzmq Java 绑定中为 ZeroMQ 创建轮询器?
- bukkit - 如何修复异常的插件类型?
- loops - 仅 AutoHotkey L Clcik 和循环 MouseMove
- firebase - 过滤 Firestore 数据以仅包含当前用户信息
- discord - 被标记的人获得新角色
- python - Python - 相同类型的数据,相同的代码,但不同的结果