C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ダウンロード後の処理方法


(過去ログ 102 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■61203 / inTopicNo.1)  ダウンロード後の処理方法
  
□投稿者/ とら (3回)-(2011/08/05(Fri) 11:12:21)

分類:[ASP.NET (C#)] 

ASP.NET
C#

お世話になっております。

現在、ダウンロードファイルをサーバーで作成後、ダウンロードする動作を行っています。
この時、作成中はボタンや画面をロックしたいと考えております。

ダウンロード処理(作成からレスポンスを閉じるまで)に入るときに、ボタンを無効化することは画面を分割することで可能です。
ですが、DL処理終了後、ボタンを有効化するところで詰まっています。
download.aspx の状態を取得できるのであれば対応できると思うのですが、可能でしょうか?
また、download.aspx からリダイレクトすることも考えましたが、ファイルを返すのでjavascriptの埋め込みができないと考えています。

目的はダウンロード中の画面制御で、現状のコードにはこだわりません。
「こうすればボタンの有効化・無効化が簡単にできる!」という場合は、その方法をご教授いただけたら幸いです。

よろしくお願いします。



main.aspx.cs  メインのページ
-----------------------------------------------------------------------------------------------
using System;
using System.Web.UI;

namespace DownloadAndLoadSample
{
    public partial class main : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                btnDownload.Enabled = true;
                btnDownload.Text = "ダウンロード開始";
            }
        }

        protected void btnDownload_Click(object sender, EventArgs e)
        {
            ClientScriptManager cs = Page.ClientScript;
            cs.RegisterStartupScript(Page.GetType(), "open", "<script type='text/javascript'>document.location.href='download.aspx'</script>", false);
            btnDownload.Enabled = false;
            btnDownload.Text = "ダウンロード中";
        }
    }
}
-----------------------------------------------------------------------------------------------


download.aspx.cs ダウンロードのページ
-----------------------------------------------------------------------------------------------
using System;

namespace DownloadAndLoadSample
{
    public partial class download : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //DUMMY ダウンロードファイル(file.txt)の作成処理
            System.Threading.Thread.Sleep(5000);

            Response.ContentType = "text/plain";
            Response.AddHeader("Content-Disposition", "attachment; filename=file.txt");
            Response.WriteFile("~/file.txt");
            Response.Flush();
            Response.End();
        }
    }

}
-----------------------------------------------------------------------------------------------

引用返信 編集キー/
■61222 / inTopicNo.2)  Re[1]: ダウンロード後の処理方法
□投稿者/ Azulean (811回)-(2011/08/06(Sat) 00:07:40)
今のアプローチでは無理じゃないでしょうか。

できるとしたら、ダウンロード側の完了、あるいは切断による中止という状況をサーバー側で把握し、クライアント側はダウンロードボタンのページかどこかで定期的にサーバーに状態を聞きに行くというところでしょうか。
クライアント側だけで、ダウンロードの完了を監視するのは無理だと思います。
(そもそも、画面が開く保障がなく、ダウンロードマネージャのようなものでダウンロード完了を知るというのはスクリプトで実現できないでしょう)
引用返信 編集キー/
■61241 / inTopicNo.3)  Re[2]: ダウンロード後の処理方法
□投稿者/ とら (4回)-(2011/08/06(Sat) 20:50:15)
お返事ありがとうございます。
やはり無理ですか。

ダウンロード処理の開始だけでいいように、機能を変えることにします。

No61222 (Azulean さん) に返信
> 今のアプローチでは無理じゃないでしょうか。
>
> できるとしたら、ダウンロード側の完了、あるいは切断による中止という状況をサーバー側で把握し、クライアント側はダウンロードボタンのページかどこかで定期的にサーバーに状態を聞きに行くというところでしょうか。
> クライアント側だけで、ダウンロードの完了を監視するのは無理だと思います。
> (そもそも、画面が開く保障がなく、ダウンロードマネージャのようなものでダウンロード完了を知るというのはスクリプトで実現できないでしょう)
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -