web-dev-qa-db-ja.com

FileUpload.hasFileは常にFalseです

FileUploadコントロールがあり(UpdatePanel内にありません)、そのhasFileプロパティは常にFalseです。

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

何か考えましたか?

35
Alaa.Ali

UpdatePanelのトリガーを追加する

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

これにより、アップロードボタンがクリックされたときにポストバックが強制されます。

また、次の行をPage_Loadに追加します

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

AJAX =>を使用してファイルをアップロードすることはできません。このUpdatePanelはAJAXリクエストをサーバーに送信するため、FileUploadコントロールをUpdatePanel内に配置しないでください。

13
Darin Dimitrov

FileUploadコントロールを使用してファイルもアップロードしましたが、HasFileプロパティがfalseを返しました。空のファイルをアップロードする場合、FileUpload.HasFileもfalseであることがわかります。この場合、アップロードするファイルにテキストを追加すると、Hasfileプロパティがtrueを返します。

10
Sego

@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);
        }
    }
7
BernieSF

アップロードしようとしているファイルに対するアクセス許可(または、より具体的にする必要はありません)についてのすべての時間に、ユーザーに十分なアクセス許可を付与しましたが、すべてうまくいきました。

あなたの助けと投稿に感謝します。

2
Alaa.Ali

FileUploadに問題がある場合があります。簡単な入力を使用できます:

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

コードでファイルをサーバーに保存する:

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

そして、ファイルはASP.NETアプリケーション(サーバー)のUploadDocumentsフォルダーに保存されます

0
igor_bugaenko