いつも参考にさせていただいています。
VisualBasic.NETでASPを開発しています。Webフォームのボタンをクリックすると、サーバー側でExcel帳票の雛形にDBから取得した値を書き込み、それをダウンロード(Content-dispositionはattachment)させるという処理を作成したいのですが、この条件(Excel帳票の雛形を使用すること)で、
ファイルを物理的にディスクに書き込まずに(ファイルを生成せずに)、ダウンロードさせることは可能でしょうか?
また、仮にできないとして、ダウンロード後にファイルを消去するという方法を取る場合、どのタイミングでどのようなで消去するのが妥当でしょうか?(できればディスクにファイルをためたくないため)
似たような経験をされた方おりませんでしょうか?
作ったデータファイルなどへのパスを取っておき、
閉じるときそのパスを使って、ファイルを削除するようにしてみてはどうでしょうか。
マグさん、ありがとうございます。
やはりファイルを作成しないとExcelのダウンロードは無理のようなので、一旦保存してからダウンロードするようにしたいと思います。
ファイルの消去に関しても、Session_End、及びApplication_Endのタイミングでで消去するようにしたいとおもいます。
ありがとうございました。
環境的にはWANなんでしょうかね
LANだったらサーバがファイル作成のお仕事やるなら
共有フォルダ作って
一緒にこちらのパス(コンピュータ名とフォルダ名)をサーバに渡してあげて
サーバのお仕事の最後にSAVEでそのパスに書き込めば
できるような気もしないような事も無いが
要は実態をサーバに作ってダウンではなく
実態を直接ローカルに作成させるということ
.netじゃないソースですが
Const adTypeBinary = 1
Dim objStream '= As ADODB.Stream
Dim vData '= As Byte
Dim objFile
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Type = adTypeBinary
.Open
.LoadFromFile "C:\**\**.xls"
vData = .Read(-1)
.Close
End With
Set objStream = Nothing
Set objFile = Server.CreateObject("Scripting.FileSystemObject")
objFile.DeleteFile "C:\**\**.xls"
Set objFile = Nothing
Response.ContentType = "application/x-download"
Response.AddHeader "Content-Disposition" , " attachment; filename=**.doc"
Response.BinaryWrite vData
こんなやり方が個人的にはベストかなと?
ツイート | ![]() |