用户选择要上传的文件然后更改名称

时间:2015-12-16 17:46:09

标签: c# asp.net

我在页面上有一个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>

对于视觉上更有视觉的人来说,这是一张图片:

enter image description here

客户端(用户)按顺序执行以下操作:

  1. 单击“选择文件”按钮
    • 弹出一个对话框,允许用户选择文件。
  2. 选择名为Foo.txt
  3. 的文件
  4. 将文件名更改为Bar.txt
    • 这是在客户端的机器上完成的,而不是在我的代码中完成的。
  5. 点击上传
  6. 此时,页面崩溃了。我在Chrome中收到以下消息:

      

    找不到此网页

         

    ERR_FILE_NOT_FOUND

    我在Page_Load()ButtonUpload_Click()设置了断点,试图弄清楚发生了什么,但看起来控件不会返回到我的页面。我认为Chrome在尝试使用名称在选中后更改一段时间后发布的文件时会出现问题。我是否有可能在服务器端捕获此错误,以便页面不会崩溃?

    如果有我不需要的代码,请告诉我。就像我提到的那样,我在ButtonUpload_Click()的第一行代码中设置了断点,并且它没有被击中,所以我假设发布该代码没有帮助。

    经过进一步测试后,似乎只会在Chrome中发生这种情况。我在Firefox和Internet Explorer中测试,文件是使用首次选择时的名称上传的。

1 个答案:

答案 0 :(得分:0)

如果我的问题正确无误,那么您正试图覆盖FileUpload.FileName属性。

  

FileUpload.FileName Property: 获取客户端上的文件名称   使用FileUpload控件上传。

尝试使用以下内容:

string fName = FileUpload1.FileName;

然后使用fName执行其余步骤(无论您要重命名的位置,都覆盖fName变量)。如果您希望使用该名称上传fName,也可以将fName传递给服务器!

如果您想在客户端执行此操作,可以使用JQuery:

  var fName =  $('#FileUpload1').prop("files")['name'];

然后根据需要设置fName。