2009-08-31 16 views
2

データベースにテキストファイルをイメージフィールドにアップロードしました。問題は、ファイルを取得しようとするときです(ユーザーがリンクのクリックでダウンロードできるようにする)。ダウンロードしようとすると、Webページのコンテンツがすべて埋め込まれます(すべてのHTMLがテキストファイルに埋め込まれています)。私はそれがファイルをダウンロードしようとする方法のエラーであると考えています。最初に一時ファイルに保存することなく、コンテンツをファイルにストリーミングすることはできませんか?データベースイメージフィールドからファイルを保存

私が使用しているコードを以下に示します。 UploadFilesは、クライアントに行くページの残りの部分のあまりを持っているようですね、データ、ID、名前など

public void DownloadUploadedFile(Page sender, UploadFiles uf) 
{ 
    sender.Response.ContentType = uf.FileType; // the binary data 
    sender.Response.AddHeader("Content-Disposition", "attachment; filename=" + uf.FileName); 
    sender.Response.BinaryWrite(uf.FileData); 
} 

答えて

2

が含まれている私のクラスです。あなたは応答をクリアしてから、それを閉じなければなりません。試してください:

sender.Response.Clear(); 
sender.Response.ContentType = uf.FileType; // the binary data 
sender.Response.AddHeader("Content-Disposition", "attachment; filename=" 
     + uf.FileName); 
sender.Response.BinaryWrite(uf.FileData); 
sender.Response.Close(); 

また、通常のページマークアップが含まれていないため、ハンドラ(ashx)を使用してください。

+0

私は.Clear()と.close()を追加しましたが、今はファイルの保存またはオープンを要求せず、永遠にロードし続けます。ユーザーがファイルを保存する前にファイルをクローズしていると思っていますか? – Dofs

+0

私はsender.Respons.Close()を書くべきであることがわかりました。そして、私はすべてのhtmlを出しませんでした。しかし今、ファイルには実際のコンテンツではなく "System.Byte []"という文字列が含まれていますか? – Dofs

+0

新しい質問で新しいスレッドを作成します。 – Dofs

関連する問題