1

更新パネル内に asyncfileupload コントロールがあります。

UploadedComplete では、ファイルをサーバーに保存します。

 protected void ImageFileUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
    System.Threading.Thread.Sleep(5000);
        if (ImageFileUpload.HasFile)
        {
            Extension= System.IO.Path.GetExtension(ImageFileUpload.FileName);

            TempImageUpload(ImageFileUpload.FileName.ToString(), Extension.Value);
            FileImage.ImageUrl = "~/Temp/" + Session["ID"].ToString() + Extension.Value;
            RemoveImageButton.Visible = true;
        }
}

ファイルは正常にアップロードされ、正しいサーバー側コードが起動されます。

ただし、viewstate とコントロールは更新しないでください。

 private string Extension
{
    get { 
        if(ViewState["Extension"]==null)
            return string.Empty;
        else
       return (string)ViewState["Extension"]; }
    set { ViewState["Extension"] = value; }
}
4

1 に答える 1

1

UploadedCompleteイベントでファイルを保存します。

  protected void ImageFileUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
  {
    if (ImageFileUpload.HasFile)
    {
      ImageFileUpload.SaveAs(Request.PhysicalApplicationPath + "Temp\\" + Session["ID"].ToString() + extension);
    }
  }

クライアント側の変更管理では、OnClientUploadCompleteを使用します。

function uploadComplete(sender, args) {
        var filename = args.get_fileName();
        document.getElementById('<%= Extension.ClientID  %>').value = "." + filename.split('.').pop();
        var btn = document.getElementById('<%= RemoveImageButton.ClientID  %>')
        btn.style.visibility = 'visible';
    }
于 2013-01-01T05:04:13.603 に答える