【发布时间】:2020-10-04 20:09:14
【问题描述】:
我也有多个客户端,例如网络、移动网络、Android 和 iOS 应用程序。现在用户正在添加一些信息,并同时上传一些文件。
现在上传多个文件是一个好的做法:
- 调用我的后端rest api将信息存储在我的数据库中并异步将这些文件(图像)从客户端直接上传到亚马逊S3,然后在成功上传后调用后端rest api来存储信息,例如S3中的文件位置等。
- 对后端进行一次休息调用以存储信息,另一次多部分后端调用反过来调用 S3 以上传文件,然后将元信息存储到数据库。
需要考虑的要点:
- 如果存在图像或视频,则还需要进行一些压缩,而不会对质量造成太大影响。最好的方法是什么?
- 我相信从后端制作它会是一种更好的方法,因此压缩逻辑将只在一个地方而不是分散在多个客户端。但我认为时间会略有增加,因为需要额外的休息时间。
- 但是,用户可以一次上传多个文件,所以如果我们应该对后端进行休息调用,那么最好将所有这些文件一次发送到后端还是更好的方法,考虑到移动应用程序和移动网络作为客户端,因为他们的互联网连接速度可能很慢,而且网络开销太大。
- 在从客户端上传到 S3 时,我想除了存储凭据之外还有其他方法,例如预签名 URL 或其他方式,因此客户端不需要存储凭据。
注意: 它不是微服务应用程序。后端使用 Spring Boot 开发。
请帮助决定更好的方法。如果需要更多详细信息,请告诉我。
【问题讨论】:
-
如您所料,第二种方法要好得多,因为后端将负责与文件加载相关的所有操作。客户无需担心它是存储在 AWS S3、GCP 云存储还是任何其他文件系统中(单一责任原则)。由于它是一个大文件,理想情况下,客户端应该使用回调(或长轮询)异步触发此 API。建议再问一个压缩问题。
-
stackoverflow.com/questions/63967628/… 按照建议,我已经要求在不同的线程中进行压缩练习。
标签: android reactjs amazon-web-services spring-boot amazon-s3