我的页面中有 fileupload ,因此用户可以浏览计算机并选择文件。当我想使用此代码获取文件名时选择文件:
string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
它返回null并且我收到此错误:
Object reference not set to an instance of an object.
调试后,我发现我的文件被发布为null并且它没有发送。为什么?添加一些代码后,我收到了这个错误:
<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Always">
<ContentTemplate>
<div class="wrapper-box">
<div class="topbox">
عکس خبر
</div>
<asp:FileUpload ID="FileUpload1" runat="server" CssClass="text-input-two" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
答案 0 :(得分:1)
根据MSDN,如果传入的FileName为null,则GetExtension将仅返回null。
指定路径的扩展名(包括句点“。”)或 没有[Null]或String.Empty。如果path为Nothing [Null],则为GetExtension 什么都没有[Null]。如果路径没有扩展信息, GetExtension返回String.Empty。
因此,在继续进行之前,先检查(文件!= null&amp;&amp; file.FileName!= null)。
答案 1 :(得分:1)
获取扩展方法返回文件的扩展名。 检查以下代码示例
string s = System.IO.Path.GetExtension("file1.aspx");
你可以用
FileUpload1.fileName 而不是 fileupload1.postedfile.filename
希望有所帮助
答案 2 :(得分:0)
尝试在和
之间添加此回发触发器</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
并在您的表单中添加enctype =“ multipart / form-data”
<form id="form1" runat="server" enctype="multipart/form-data">
答案 3 :(得分:0)
使用
string ext = System.IO.Path.GetExtension("FileName.ext");
代替
string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);