【ASP.NET】ASP.NET AJAX Control Toolkit (AsyncFileUploadコントロール編)

参考文献

http://www.atmarkit.co.jp/fdotnet/dotnettips/966aspajaxasyncfileupload/aspajaxasyncfileupload.html
にもあるように、ファイル・アップロードのためのサーバ・コントロールとしては、FileUpload/HtmlInputFileコントロールがあるが、これらのコントロールをUpdatePanelコントロールと組み合わせて利用することはできない。
そのため、

サンプル

デザイン部

<head runat="server">
<script type="text/javascript">
function uploadCompleted(sender, args) {
    $get('Label1'). innerHTML =
        args.get_fileName() + 'のアップロードに成功しました。';
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <ajaxToolkit:AsyncFileUpload ID="AsyncFileUpload1" runat="server" 
        ThrobberID="Image1" onclientuploadcomplete="uploadCompleted" />
    <asp:Image ID="Image1" runat="server" 
        ImageUrl="~/Images/progress-indicator.gif" />
    <br />
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>

プログラム部

Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AsyncFileUpload1.UploadedComplete
    ' アップロード先のパスを生成
    Dim uppath As String = Server.MapPath( _
      "~/App_Data/" + Path.GetFileName(e.FileName))

    ' アップロード・ファイルを保存
    AsyncFileUpload1.SaveAs(uppath)
End Sub

メモ

 * 上記の「サンプル」にボタンを追加し、ファイルをオープンしようとすると、以下のような現象が起こってしまう(このコントロールは、ファイル保存専用?)

  + ファイル名などファイルの情報がとれずNullが返ってくる
  + ボタンのクリックイベントでUploadedCompleteイベントが呼ばれてしまう

結局、FileUploadコントロールを使うしかないのかも。。。
http://blogs.yahoo.co.jp/dk521123/26824686.html