0

ashxでファイルをダウンロードする際に助けが必要です

外部リンクから大きなファイル (約 2 ~ 4GB) をダウンロードしようとしています (Web サーバーに保存されていないファイル)

ここに私のコードがあります

context.Response.Clear();
context.Response.ContentType = "video/mp4";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
context.Response.Write("http://otherserver/file.m4v");
context.Response.Flush();
context.Response.Close();

ダウンロードしたファイルは1kbで、何が間違っていますか?ファイルをダウンロードする他の方法はありますか?ブラウザーでファイルをダウンロード (およびファイル名を変更) して、ブラウザーでプレビューしないように強制しようとしています

PS私の英語で申し訳ありません;)

4

2 に答える 2

1

これは間違ったアプローチです。ファイルの内容は次のとおりです。

http://otherserver/file.m4v

ここで設定しているもの:

context.Response.Write("http://otherserver/file.m4v");

使用する必要があるのはHttpWebRequest Classです。

于 2013-01-24T13:39:39.087 に答える
0

あなたがしているのは、テキストを含むファイルをブラウザーに送信することだけです。"http://otherserver/file.m4v"ヘッダーは、ブラウザーがファイルを表示するのではなくダウンロードすることを提案していることを示しています。

ブラウザには、URL を含むファイルが表示されたときに「ああ、その URL にあるものは何でもダウンロードする必要があります」と言うような魔法はありません。

さらに、少しグーグルで調べて、このテーマに関するいくつかのPHPの 議論を調べたところ、文字通りリモート URL からサーバーにファイルをストリーミングし、それをサーバーから送信せずに、やりたいことを行う方法はないと思います。サーバーからクライアントへ。

ヘッダーを追加してクライアントにリダイレクトを送信することもできますが、クライアントがリモート URL への要求を行うときにヘッダーを破棄し、結果をブラウザーに表示することを期待しています。

于 2013-01-24T13:44:26.983 に答える