FileUpload.HasFile returns "False" 多个文件上传 - ASP.net

FileUpload.HasFile returns "False" for multiple files upload - ASP.net

我正在使用 ASP.net FileUpload 控件上传数据库中的多个文件。

<asp:UpdatePanel ID="UP_div_askQ" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:FileUpload ID="FUQuestionFiles" CssClass="form-control" AllowMultiple="true" runat="server" />
        <asp:Button ID="btnQSave" runat="server" CssClass="btn btn-success" Text="ASK QUESTION" OnClick="askQuestion" />
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="btnQSave" />
    </Triggers>
</asp:UpdatePanel>

在后面的代码中,我使用 HasFile 检查文件是否存在。

log.Debug("there are file" + FUQuestionFiles.HasFile.ToString());

,但是HasFile returns选择多个文件时。

注意:如果只选择一个文件,则returns正确。

感谢您的帮助。

FileUpload 有两个不同的属性用于检查 a/any 文件是否已上传:

FileUpload.HasFile:

Gets a value indicating whether the FileUpload control contains a file.

FileUpload.HasFiles:

Gets a value that indicates whether any files have been uploaded.

检查是否有任何文件上传的最佳方法是同时检查 HasFileHasFiles

if(fileUpload1.HasFile || fileUpload1.HasFiles)
    // do some code!

编辑 1:

您是否尝试在 Page_Load 中添加以下行?

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

编辑 2:

Can you please explain what difference this line of code made?

来自这个 Forms in HTML documents W3C 草案:

The content type "application/x-www-form-urlencoded" is inefficient for sending large quantities of binary data or text containing non-ASCII characters. The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.

如果表单包含 file input,则表单的 enctype 属性应设置为 multipart/form-data

我认为您遇到了这个问题,因为您将 FileUpload 放在 UpdatePanel 中。