如果文件已移动或已被删除,如何在文件上传期间检测到?

时间:2011-11-17 21:31:23

标签: asp.net-mvc-3 firefox

我有一个ASP.NET MVC网页,它有一个文件上传控件。在极少数情况下,用户引用的文件会在用户触发发布到页面之前在文件系统上移动或删除。在IE9中,页面成功发布,但ContentLength为零(预期),可以在服务器端处理。但是在Firefox中我发现POST操作永远不会到达服务器。

在发布页面之前,有没有检测到文件引用仍然有效?或者是一种在POST期间检测到由于移动/删除文件而在客户端发生错误的方法?

1 个答案:

答案 0 :(得分:0)

仅使用input type =“file”,您无权检查文件是否确实存在,直到尝试上载为止。有一些新兴的功能,如FileReader可能有助于浏览器成熟(因为它并非在所有浏览器中都可用),这应该使上传过程更加顺畅(并且会使这种情况的检测更加简单)。

如果您使用Ajax样式上传过程,您可以立即启动上传,以帮助防止问题首先发生。

或者,有点hacky:Firefox的一个想法是在onsubmit事件中添加一个setTimeout,该事件在一秒钟之后触发......并检查上传是否开始(通过使用Ajax查询服务器到JsonResult操作) /可以快速查看上传是否开始的功能等)。虽然你需要担心时间问题,但它有点混乱 - 并且可能仅仅是为了处理发生这种情况的情况。