【发布时间】:2017-10-23 09:59:25
【问题描述】:
我们正在开发一个 BI 应用程序,我们的客户每天都会向我们发送数据文件。我们正在使用 CSV 文件进行数据交换,因为我们的客户习惯于使用 Excel 观看数据,而且他们还没有准备好在他们的系统上使用 API(也许几年后我们将能够使用 XML/JSON 网络服务,我们希望)。
目前数据传输是通过 FTP(实际上是 SFTP)进行的。我们的客户在 FTP 服务器上自动上传文件,我们有一个 CRON 任务来监视文件是否已发送。
但是这样做有很多缺点:
- 我们无法可靠地知道上传是否已完成或仍在进行中(我们要求他们上传一个临时名称的文件,然后移动它,但他们中的许多人仍然不这样做)
- 所以,我们可以尝试猜测,如果经过足够的时间,则认为上传完成。但是 FTP 协议不允许获取服务器时间,时间可以不同步。所以我们可以上传一个空文件并读取它的日期来知道服务器的时间。但是我们需要写权限才能做到这一点......
- FTP 协议允许暂停上传...
然后,我们正在考虑通过要求我们的客户使用 HTTPS 将文件直接上传到我们的应用程序来传输文件。这更可靠,但不太方便:
- 我们的客户上传后无法查看文件内容
- 我们必须注意服务器上的上传大小和超时
- 文件可能非常大(最大 300Mo),因此最好在上传前压缩它们(可以将大小减小到 10%)。
- 这对我们来说不仅仅是一个 FTP 服务器(我们需要创建 UI、上传进度、列出文件以将它们下载回来……)
还有其他解决方案吗? BI 应用程序通常如何共享数据? HTTPS 对我们来说是一个好的解决方案吗?
【问题讨论】: