我的任务是允许用户上传excel文件并验证文件中的数据。
我已经研究了在用户提交excel文件(在javascript中)之前如何验证数据的方法,但看起来你不能这样做。
似乎唯一的方法是将此文件发布到服务器并在服务器上进行验证。
这似乎是时间密集的。截至目前,我们并不知道这些文件有多大,所以我们真的不想让我们的服务器陷入困境。
有没有好办法呢?
另外,我没有在服务器上保存excel文件,我只关心其中的数据。
这是一个ASP .NET应用程序。
答案 0 :(得分:0)
有tools to parse excel files in javascript,所以它是可行的,但您需要提供更多信息。是什么使有效的文件?是否有特定格式,或者您只是想看看它是否会在Excel中打开?
答案 1 :(得分:-1)
这种验证绝对应该在服务器端完成。即使有客户端验证,您也不能相信它或假设它正常运行并且无论如何都希望重新验证服务器端。
如果文件可能很大并且验证可能需要很长时间(超过几分钟),那么您将需要异步执行此类任务。作为一般建筑指南,我过去做过如下:
有两个数据库表来保存电子表格数据。一个用于数据本身(记录级别),一个用于上载电子表格(文件级别)的总体状态。像这样:
Spreadsheets
----------
ID
User
Status
DateUploaded
DateProcessed
etc.
SpreadsheetRecords
----------
ID
SpreadsheetID
SomeValueFromTheData
TheNextValueFromTheData
etc.
ValidationMessage
Spreadsheets
表,查找处于“挂起”状态并“处理”该数据的新记录。这就是“验证”发生的地方,这可能意味着任何事情,具体取决于业务规则。对于SpreadsheetRecords
中的每条记录,执行业务逻辑并存储结果(例如,如果在ValidationMessage
中出现错误,则会出现错误。)Spreadsheets
中的记录。 (通过,失败等)此时,您可以通过电子邮件或网站上的某些通知(例如Facebook的通知栏等)通知用户处理已完成。当然,这一切都非常高级。这里有很多假设需要针对您自己的设置/架构进行调整。重点是整个事物的异步性质。完全可以同步完成所有这些操作,这样就省去了告诉用户它已经开始并在完成时通知它们的步骤。但是对于类似这样的事情的同步处理存在超时(或至少呈现糟糕的用户体验)的风险,用于长时间运行的任务。