【发布时间】:2016-03-22 23:39:37
【问题描述】:
我在页面上有一个FileUpload 元素。旁边是一个标签,显示上传尝试的结果,下面是一个按钮,用户可以选择执行上传。
<p>
<asp:FileUpload ID="InputUpload" runat="server" />
<asp:label id="LabelResult" runat="server" />
</p>
<p>
<asp:Button runat="server" ID="ButtonUpload" Text="Upload"
OnClick="ButtonUpload_Click" />
</p>
对于更注重视觉的人来说,这是一张图片:
客户端(用户)按顺序执行以下操作:
- 单击选择文件按钮
- 这会弹出一个对话框,允许用户选择文件。
- 选择一个名为 Foo.txt 的文件
- 将文件名改为 Bar.txt
- 这是在客户端机器上完成的,而不是在我的代码中。
- 点击上传
此时,页面崩溃。我在 Chrome 中收到以下消息:
找不到此网页
ERR_FILE_NOT_FOUND
我在Page_Load() 和ButtonUpload_Click() 中设置了断点以试图弄清楚发生了什么,但看起来控制权不会返回到我的页面。我认为 Chrome 在尝试发布一个名称在选择后一段时间内更改的文件时出现问题。我是否可以在服务器端捕获此错误,以免页面崩溃?
如果我没有包含我需要的代码,请告诉我。就像我提到的,我在ButtonUpload_Click() 的第一行代码处设置了断点,但它没有被命中,所以我认为发布该代码不会有帮助。
经过进一步测试,这似乎只发生在 Chrome 中。我在 Firefox 和 Internet Explorer 中进行测试,文件是使用第一次选择时的名称上传的。
【问题讨论】:
-
您是否尝试过使用其他浏览器,以便确保它是 chrome 的问题(我不这么认为)另外,您能否提供代码如何更新文件名?
-
@curiousBoy 用户使用 Windows 更改其计算机上的文件名。没有代码 - 您只需右键单击文件并单击“重命名”。我在 Firefox 和 Internet Explorer 上进行了测试,但没有遇到同样的问题。我将编辑问题以明确这仅在 Chrome 中发生。感谢您了解这一点。
-
可能不是最好的解决方案,但是,一旦文件上传,获取文件名(字符串 fName = FileUploadXX.Filename;),然后在其余代码中重命名/设置“fName”变量!我觉得应该没问题
-
如果我理解正确,用户通过右键单击并重命名文件来重命名文件(比如说 Windows 机器)对吗?单击上传按钮时,您是否尝试过再次获取文件名(基本上就像他们刚刚添加新文件一样刷新)?
-
这也可能是 chrome 的缓存问题