FileUpload.hasFile始终为False

Ala*_*Ali 37 vb.net asp.net file-upload

我有一个FileUpload控件(它不在里面UpdatePanel),它的hasFile属性总是如此False.

   <asp:FileUpload ID="certificateUploader" runat="server"/>
Run Code Online (Sandbox Code Playgroud)

任何想法?

小智 52

为UpdatePanel添加触发器

<Triggers>
   <asp:PostBackTrigger ControlID="btnCertificateUpload" />
</Triggers>
Run Code Online (Sandbox Code Playgroud)

这将在单击上载按钮时强制回发.

同时将下面的行添加到Page_Load

Page.Form.Attributes.Add("enctype", "multipart/form-data");
Run Code Online (Sandbox Code Playgroud)

  • 当问题清楚地表明文件上传不在更新面板中时,为什么这是正确的答案?! (6认同)
  • 只添加触发器为我做了伎俩.谢谢! (4认同)

Dar*_*rov 14

您无法使用AJAX上传文件=>您不应将FileUpload控件放在UpdatePanel中,因为此UpdatePanel会向服务器发送AJAX请求.


小智 10

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


Ber*_*eSF 8

补充@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>
Run Code Online (Sandbox Code Playgroud)

你的代码背后(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);
        }
    }
Run Code Online (Sandbox Code Playgroud)