[英]validating a excel file in a web application
我的任务是允许用户上传excel文件并验证文件中的数据。
我研究了如何在用户向客户端提交excel文件之前(在javascript中)验证数据的方法,但看来您无法做到这一点。
似乎唯一的方法是将此文件发布到服务器并在服务器上进行验证。
这似乎可能很耗时。 截至目前,我们还真的不知道该文件的大小,因此我们真的不想停顿我们的服务器。
有什么好办法吗?
另外,我不是将excel文件保存在服务器上,而只是在乎其中的数据。
这是一个ASP .NET应用程序。
有一些工具可以解析javascript中的excel文件 ,因此这是可行的,但是您需要提供更多信息。 什么使有效文件? 是否有特定格式,还是只想看看它是否可以在excel中打开?
这种验证肯定应该在服务器端进行。 即使有客户端验证,您也不能信任它或假设它运行正确并且无论如何都希望重新验证服务器端。
如果文件可能很大,并且验证可能需要很长时间(超过一会儿),那么您将需要异步执行此类任务。 作为一般的体系结构指南,过去,我这样做如下:
有两个数据库表来保存电子表格数据。 一种用于数据本身(记录级),另一种用于上载电子表格的整体状态(文件级)。 像这样:
Spreadsheets
----------
ID
User
Status
DateUploaded
DateProcessed
etc.
SpreadsheetRecords
----------
ID
SpreadsheetID
SomeValueFromTheData
TheNextValueFromTheData
etc.
ValidationMessage
Spreadsheets
表以查找处于“待处理”状态的新记录,并“处理”该数据。 这就是发生“验证”的地方,这取决于业务规则可能几乎意味着任何事情。 对于SpreadsheetRecords
每个记录,执行业务逻辑并存储结果(例如,如果存在错误,则将该错误放入ValidationMessage
)。 Spreadsheets
的记录。 (通过,失败等。)此时,您可以通过电子邮件或网站上的某些通知(例如,类似于Facebook的通知栏)通知用户处理已完成。 当然,这都是非常高级的。 这里有许多假设需要针对您自己的设置/体系结构进行调整。 要点是整个事物的异步性质。 也可以完全同步执行所有这些操作,这只需要消除告诉用户它已经开始并在完成时通知他们的步骤。 但是,对于类似这样的事情进行同步处理可能会导致长时间运行的任务超时(或至少会带来不良的用户体验)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.