眼前的问题
- 我有一个Rails应用程序。
- 用户将上传文件。 1到3000个文件之间的任何位置。有时它们是zip文件,有时不是。我不想用这些文件上传来阻止服务器,所以我正在寻找解决此问题的方法。
- 压缩后的文件必须解压缩。
- 然后我要检查是否:用户以前上传了相同的文件?例如,如果用户一周前已经上传了相同的文件(2),则存在问题:(i)我们不允许该特定文件上传,或者我们询问用户:确定要吗再次上传相同的文件?
- 然后我想将密钥/链接存储到后端相应模型/记录中的文件中。
想知道处理上述问题的最佳工作流程是什么:即一个非常概括的概述:换句话说,可以最好地使用AWS Lambda / Google云计算等解决上述问题吗?我们将如何使用神社的宝石来最好地处理这种情况?使用AWS Lambda而不是使用后台作业有意义吗?
我的偏好是使用Shrine宝石进行上传。
我的想法:
- 在客户端,用户拖放用户的文件 要上传。
- 然后通过Shrine宝石将所有文件(无论是压缩文件还是其他文件)上传到临时存储区。
- 如果上传了zip文件,则可能必须触发AWS lambda函数以解压缩文件。如果真是这样,那么到最后,必须以某种方式将这些文件的密钥返回给客户端,以处理验证问题–但是,AWS Lambda函数将如何将该请求返回给原始客户端请求来自何处?还是应该从客户端生成AWS lambda函数,并传递未压缩的Blob的ID?
- 然后,我们需要运行一些验证:我们要处理存在重复文件的情况。我们将需要检查一下这些文件是否已经上传。
- 处理完这些验证问题后,用户提交表单,并将所有密钥存储在适当的记录中。
这些想法绝不是规定性的
我正在寻求一些关于如何做到这一切的最佳方法的一般建议。我绝不局限于AWS:我可以轻松地使用Google或Azure。上面的任何指导将不胜感激。
具体问题:
- 如何触发AWS lambda函数?
- 如何将上传的文件的密钥返回给客户端?
一般概述是什么意思?
以下是一些概述的示例:
(1)Uploading & Unzipping files to S3 through Rails hosted on Heroku?
(2)https://www.quora.com/How-do-I-extract-large-zip-files-in-AWS-Lambda
任何朝着正确方向的指针将不胜感激。
干杯!