我有这个页面,用户可以在其中上传文档(多个文档,每个大小限制为 10MB)。这是一个两步过程。第 1 步有输入表单。第 2 步是带有提交按钮的预览页面。
我应该如何处理用户在预览页面上关闭浏览器而不提交表单的情况?我应该在步骤 1 之后将文件保存在临时位置吗?这是一个体面的解决方案吗?
上传(合理)大文件的最佳实践是什么?
谢谢。
我有这个页面,用户可以在其中上传文档(多个文档,每个大小限制为 10MB)。这是一个两步过程。第 1 步有输入表单。第 2 步是带有提交按钮的预览页面。
我应该如何处理用户在预览页面上关闭浏览器而不提交表单的情况?我应该在步骤 1 之后将文件保存在临时位置吗?这是一个体面的解决方案吗?
上传(合理)大文件的最佳实践是什么?
谢谢。
看看这个:
http://www.codeproject.com/Articles/68374/Upload-Multiple-Files-in-ASP-NET-using-jQuery
无论如何,您最终可能会查看 jQuery/AJAX 控件来执行此操作。
如果用户离开,那么让他们重新开始。他们离开的可能性很大。如果发生事故,责任由他们承担。如果您选择在他们不提交的情况下存储他们的数据,这可能会让恶意用户利用您的存储。
您还可以研究一个称为分块的过程。
有关 mvc3 中文件上传的更深入讨论,请参阅此 SO 帖子:MVC 3 文件上传和模型绑定
您可以使用临时文件夹来保存文件并仅在提交表单时将文件复制到其最终位置。
无论如何,最好实现一个垃圾收集器。垃圾收集器可以每晚清空临时文件夹。但是在使用垃圾收集器时,如果您有办法识别未提交的文件(例如,如果在提交时将一行添加到数据库中),您可以将文件从头开始放在它们的最终位置,然后让垃圾收集器每晚都会清除它们。
可以使用诸如 Uploadify 的 JQuery UI 插件上传大文件:http ://www.uploadify.com/ 。需要注意的是,它使用了flash,一方面非常适合上传大文件,但另一方面会阻碍你的应用程序支持iPad等苹果机器。