我们正在尝试从 Android 和 iOS 手机构建一个大文件(大小>30MB)上传,为此创建了一个用于文件上传的 Express.js API。
端点:用户/上传
uploadFile:function(req,res){
//upload files to AWS s3 asychrnous
s3.upload(params,options,function(err, data) {
//when upload complete
//need a help on this part
if(data){
//Send a notification to client
}
});
res.json({
status:true,
'message':'Upload ongoing'
});
}
当用户请求 API (user/upload
) 时,它会立即给出以下响应:
{
status:true,
'message':'Upload ongoing'
}
因为上传是异步的。那么上传完成后如何通知客户端呢?
最佳答案
对于特定用例,我建议使用以下流程
- 从 Express API 获取 Pre-Signed URL将文件上传到S3
- 从移动客户端将文件直接上传到 S3(这将显示状态为正在上传)
- 上传完成后,S3 将触发 SNS 推送通知,该通知将发送到移动设备
- 移动设备将读取推送通知并更改应用中的上传状态
以上流程完全异步且高度可扩展,减少了 Express API 的负载。
关于javascript - 通过 Express.js 中的 API 上传文件 : Notification after file upload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43535414/