# 解決 FileUpload.HasFile 總是回傳 false 的問題

前陣子使用 WebForm（.aspx）的 FileUpload 上傳檔案時，後置程式碼（Code Behind）一直無法取得檔案，FileUpload.HasFile 總是回傳 false。

相關程式碼簡化如下。

首先是 .aspx 頁面：

```html
<form id="form1" runat="server">
    <div>
        <!--表單-->
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button Text="上傳檔案" runat="server" />
    </div>
    <div>
        <!--結果-->
        <asp:Label ID="Label1" runat="server" />
    </div>
</form>
```

然後 .aspx.cs 頁面：

```csharp
protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        Label1.Text = FileUpload1.HasFile.ToString();
    }
}
```

在找了一陣子後，發現是上傳的檔案大小是 0 KB 的關係，這將會導致 FileUpload.HasFile 回傳 false。

另外，如果在 UpdatePanel 內使用 FileUpload，又有一些需要注意的地方。

參考資料：

* [FileUpload ASP Control does not contain uploaded file](https://social.msdn.microsoft.com/Forums/en-US/00445d01-0b1f-452d-8a97-7d58108c511b/fileupload-asp-control-does-not-contain-uploaded-file?forum=aspwebforms)
    
* [\[ASP.NET\]\[Tips\]FileUpload.HasFile 屬性會檢查檔案內容](https://dotblogs.com.tw/ricochen/2010/12/23/20339)
