2016-12-08 16 views
0

ASP.net FileUploadコントロールを使用して、データベースに複数のファイルをアップロードしています。FileUpload.HasFileは、複数のファイルをアップロードする場合に "False"を返します。 - ASP.net

<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は、複数のファイルが選択されている場合にfalseを返します。

注:ファイルが1つしか選択されていない場合は、trueを返します。

ありがとうございました。

+0

投稿したファイルをループしてみましたか? 'foreach(HttpPostedFile uploadedFile in FUQuestionFiles.PostedFiles) {' –

+0

はい。私はファイル数をカウントしようとしましたが、カウントは0のままです。 –

+0

うまく動作します。あなたのコードをテストし、投稿されたファイルを@ un-luckyが示唆するようにループするとき、すべてのファイルが表示されます。 – VDWWD

答えて

1

FileUpload /任意のファイルがアップロードされたかどうかをチェックするための2つの異なる特性を有する:

FileUpload.HasFile:

にするFileUploadコントロールは ファイルが含まれているかどうかを示す値を取得します。

FileUpload.HasFiles:

任意のファイルがアップロードされているかどうかを示す値を取得します。

ファイルがアップロードされているかどうかを確認する最も良い方法は、HasFileHasFilesの両方を一緒にチェックすることです。

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

編集1:

あなたはPage_Loadに以下の行を追加しようとしたことがありますか?

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

編集2:

あなたはこのコード行が作られたどのような違いを説明していただけますか?

W3CでこのForms in HTML documentsドラフトから:

コンテンツタイプ "アプリケーション/ x-www-form-urlencodedでは" バイナリ・データまたは 非ASCIIを含むテキストを大量に送信するため 非効率的です文字。 コンテンツタイプ「マルチパート/フォームのデータ」 ファイル、非ASCIIデータ、および バイナリデータを含むフォームを送信するために使用する必要があります。フォームがmultipart/form-dataに設定する必要があり、フォームのfile inputenctype属性が含まれている場合は

UpdatePanelに入れてしまったので、この問題に直面したと思います。

+0

両方ともfalseを返します –

+0

あなたはこのコード行がどのような違いがあったのか説明していただけますか教えてください –

+0

@それはあなたと他の人を助けることを願っています。 –

関連する問題