2012-03-13 96 views
26

我有一个FileUpload控件(并且它不在UpdatePanel中),它的hasFile属性总是FalseFileUpload.hasFile始终是False

<asp:FileUpload ID="certificateUploader" runat="server"/> 

有没有想法?

+0

是你的问题清楚。到底发生了什么 – JayOnDotNet 2012-03-13 11:04:17

+0

当我点击浏览和浏览文件,选择一个打开,我可以看到fileUploader控制权的文件的路径,当我点击保存按钮(customzied为我的应用程序),我检查如果它.File它每次都返回False。 – 2012-03-13 12:08:48

+0

你可以在这里发布一些代码 – JayOnDotNet 2012-03-13 12:11:38

回答

10

您不能使用AJAX上传文件=>您不应该在UpdatePanel中放置FileUpload控件,因为此UpdatePanel会向服务器发送AJAX请求。

+1

我从updatepPanel删除了fileupload标签。 – 2012-03-13 11:04:25

+0

2012-03-13 11:04:43

+0

很好,是否解决了您的问题? – 2012-03-13 11:10:49

2

整个过程是关于我试图上传的文件的权限(或不必更具体),我授予用户足够的权限,并且一切顺利。

非常感谢您的帮助和职位。

40

添加触发器为您的UpdatePanel

<Triggers> 
    <asp:PostBackTrigger ControlID="btnCertificateUpload" /> 
</Triggers> 

这将迫使回传被点击上传按钮时。

另外补充线下到Page_Load

Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
+0

将明确给它一个尝试:) – 2012-05-09 06:05:10

+0

这应该是正确的答案。 – DarrylGodden 2012-05-30 16:05:47

+4

只添加触发器为我做了诀窍。谢谢! – Dogahe 2012-10-10 15:06:43

1

有时与文件上传有问题。相反,它可以用简单的输入:

<input id="filMyFile" type="file" runat="server"></input> 

在代码保存文件到服务器:

HttpPostedFile myFile = filMyFile.PostedFile;   
string fullPath=Server.MapPath("~/UploadDocuments/") + myFile.FileName; 
myFile.SaveAs(fullPath); 

和文件将在UploadDocuments文件夹保存在您的ASP.NET应用程序(服务器)

0

你可以尝试从UpdatePanel中取下按钮; 据我所知,UpdatePanels在任何其他更新面板内更新时总是更新,所以如果你的按钮回发,你的FileUpload控件也回发并丢失文件引用。

9

我也使用FileUpload控件上传了一个文件,但HasFile属性返回了false。如果你上传一个空文件,那么FileUpload.HasFile也是false。在这种情况下,向要上传的文件添加一些文本将使Hasfile属性返回true。

+0

面临同样的问题。 – Muhammedh 2015-08-03 14:27:25

4

,以补充@dbFrameIT支持给出的例子:

 <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Always" runat="server"> 
      <ContentTemplate> 
       <asp:FileUpload ID="FileUpload1" runat="server" /> 
       <asp:Button ID="UploadButton" runat="server" Text="Upload Selected File" OnClick="UploadButton_Click" /> 
       <asp:Label ID="UploadDetails" runat="server" Text=""></asp:Label> 
      </ContentTemplate> 
      <Triggers> 
       <asp:PostBackTrigger ControlID="UploadButton" /> 
      </Triggers> 
     </asp:UpdatePanel> 

后面的代码(C#)

protected void UploadButton_Click(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile == false) 
     { 
      UploadDetails.Text = "Please first select a file to upload..."; 
     } 
     else 
     { 
      string FileName = FileUpload1.FileName; 
      UploadDetails.Text = string.Format(
        @"Uploaded file: {0}<br /> 
       File size (in bytes): {1:N0}<br /> 
       Content-type: {2}", 
         FileName, 
         FileUpload1.FileBytes.Length, 
         FileUpload1.PostedFile.ContentType); 

      // Save the file 
      string filePath = Server.MapPath("~/Brochures/" + FileUpload1.FileName); 
      FileUpload1.SaveAs(filePath); 
     } 
    }