重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ASPで、サーバー側で動的に作成したCSVファイルをクライアント側にダウンロードさせたいと思っていますが、
ダウンロードできるときとできないときがあり困っています。

「ファイルのダウンロード」ダイアログが表示され、うまくダウンロードできるときと、
「Internet Explorer では、[サイト名]-[aspファイル名]をダウンロードできません。このインターネットのサイトを開くことができませんでした。要求されたサイトがしようできないか、見つけることができません。後でやり直してください。」のメッセージが表示され、ダウンロードできない場合があります。
どちらもサーバー上にダウンロードすべきCSVファイルは作成されているので、ダウンロード部分に問題があると思うのですが、原因がわかりません。
ひとつ気づいたのが、csvファイルの容量が4.0MBを超えるとダウンロードできないような気がするのですが、関係ありますでしょうか?

よろしくお願い致します。

--------出力のためのスクリプト-----------------
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename = " & CSVファイル名
Set fs = Server.CreateObject("Scripting.FileSystemObject")
CSV_DATA = Server.MapPath(CSVファイル名)
If fs.FileExists(CSV_DATA) Then
Set ts = fs.OpenTextFile(CSV_DATA, 1)
Do Until ts.AtEndOfStream
Response.Write ts.ReadLine() & vbCrLf
Loop
ts.Close
End If
Response.End
-----------------------------------------------

A 回答 (2件)

Const adTypeBinary = 1


Response.AddHeader "Content-Type","text/plain"
Response.AddHeader "Content-Disposition","attachment; filename=" & CSVファイル名
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing

ではどうでしょうか。バイナリ扱いしています。

Response.ContentType = "application/octet-stream"
でもいいかもしれません。

"Content-Disposition"を「inline」にすると、ブラウザに直接表示に、
「attachment」にすると、開くか保存するかダイアログ表示になるのが
イメージかと思います(ブラウザにより挙動は異なります)。
処理対象のファイルの拡張子がWindowsで登録されている場合、
ブラウザが直接表示したがります。
CSVの場合、Excelがインストールされているマシンとそうでないマシンでも挙動が異なります。
    • good
    • 0

自信ないのですがヘッダーのContent-Dispositionのattachmentをinlineにしてみたらどうでしょう。

    • good
    • 0
この回答へのお礼

変更してみましたが、変わりありませんでした。
ありがとうございました。

お礼日時:2005/09/16 13:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!