我的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;
答案 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.