在点击服务器后,如何在asp:FileUpload上重置文件名

时间:2014-07-23 00:37:24

标签: c# asp.net file-upload

我的asp.net网站上有一个文件上传部分:

<asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true"/>

<asp:Button ID="UploadPrework" runat="server" OnClick="UploadPrework" Text="Upload" />

在我的后端,当有人点击上传按钮时,我保存文件:

    protected void UploadPrework(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            ReadExcelSheet();
        }

    }

    private void ReadExcelSheet()
    {
        String savePath = FileUpload1.FileName;

        FileUpload1.PostedFile.SaveAs(Server.MapPath("~/App_Data/" + savePath));

    }

但是,保存文件后,文本框中文件的名称会消失。相反,它又回到说“没有选择文件”。

如何重置文件名?

我试过没有运气这样做:

FileUpload1.FileName = savePath; 

1 个答案:

答案 0 :(得分:0)

这不能通过设计以编程方式设置。文件上传控件呈现为

<input type="file" ... />

大多数浏览器不允许预设作为安全预防措施,恶意用户可能会将value属性设置为c:\ passwords.txt,通过css隐藏控件并通过javascript提交表单。

您可以通过Chrome中的控制台验证此行为(IE似乎忽略了尝试):

>>$("#MainContent_FileUpload1").val("test.txt")

>>InvalidStateError: Failed to set the 'value' property on 'HTMLInputElement': This input element accepts a filename, which may only be programmatically set to the empty string.