6

いくつかのドキュメントを格納する SQL データベースがあります。

ユーザーはアプリケーションにサインインして、ドキュメントのリストを表示できます。

ドキュメントのグリッドビューでリンクボタンのダウンロードをクリックすると、データベースからファイルを取得し、ファイル システムに書き込み、このコードを実行します。

    System.IO.FileInfo file = new System.IO.FileInfo(System.Configuration.ConfigurationManager.AppSettings["UploadPath"] + DocumentName);

    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.Cookies.Clear();
    Response.Cache.SetCacheability(HttpCacheability.Private);
    Response.CacheControl = "private";
    Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;
    Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
    Response.AppendHeader("Content-Length", file.Length.ToString());
    Response.AppendHeader("Pragma","cache");
    Response.AppendHeader("Expires", "60");
    Response.ContentType = GetContentType(file.Extension);
    Response.AppendHeader("Content-Disposition",
    "inline; " +
    "filename=\"" + file.Name + "\"; " +
    "size=" + file.Length.ToString() + "; " +
    "creation-date=" + DateTime.Now.ToString("R") + "; " +
    "modification-date=" + DateTime.Now.ToString("R") + "; " +
    "read-date=" + DateTime.Now.ToString("R"));

私の GetContentType() メソッドは、「application/pdf、application/msw0rd など」を許可しているファイルの適切なファイル タイプを返すだけです。

私の問題は、ファイルが保存されると、ファイル システムのファイルではなく、Web ページ自体になることです。Google Chrome では、ファイル名の末尾に .htm 拡張子を付けていますが、これは Web ページであることを認識しているためでしょうか?

とにかく、最初のステップとしては、実際のファイルを取得することです。HTML の Web ページのコピーではありません。

ありがとう。

4

3 に答える 3

9

それ以外の

Response.AppendHeader("Content-Disposition", "インライン; " + "filename=

使用する

Response.AddHeader("content-disposition:", "attachment;filename=

于 2008-12-03T06:51:29.050 に答える
9

ファイルの実際のコンテンツをどのように送信していますか??

通常はResponse.TransmitFileメソッドを使用します。基本的にファイルを開き、その内容を Response.OutputStream に送信します。

于 2008-12-03T07:14:25.527 に答える
3

content-disposition を「inline」ではなく「attachment」に設定してみましたか? ブラウザは、ユーザーにドキュメントを開くか保存するように促すと思います。

また、通常、BinaryWrite メソッドを使用して、バイト ストリームをデータベースから Response オブジェクトに直接書き込むことで、ファイル システムをバイパスできます。レスポンスのクリアなどを心配する必要はありません。私は過去に、ページで非表示の iframe を使用して成功し、Javascript を使用してその src をドキュメント ID をパラメーターとして受け取る HTTP ハンドラーに設定しました。 QueryString で。

于 2008-12-03T06:29:48.907 に答える