• 締切済み

CSVファイルのダウンロードができたりできなかったり・・

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 -----------------------------------------------

みんなの回答

  • akkun2k
  • ベストアンサー率71% (5/7)
回答No.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がインストールされているマシンとそうでないマシンでも挙動が異なります。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

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

pyonpyoi
質問者

お礼

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

関連するQ&A

  • ASPでCSVファイルを作成しダウンロードさせる

    ASPファイルで、動的にCSVファイルを作成し、クライアントにダウンロードさせたいのですが、実際には、ファイルは作成せずに、ASPで直接、CSVフォーマットのファイルをダウンロードさせているように振舞わせることはできないでしょうか? 手順 クライアント        サーバー あるURL(A.ASP)にアクセス              A.ASPのスクリプトでCSVフォーマットを作成              クライアントに送信(多分、Response.Writeで) ダウンロードダイアログが開く 「A.CSVをダウンロードしますか?」 のような感じ ダウンロード、またはExcelが開く というようなイメージです。 CSVファイルを作ってしまうと、複数のユーザーからほぼ同時に要求があった場合、望むCSVにならない可能性があり、また、毎回ファイル名を変えると、Webサーバー上にCSVファイルが沢山できてしまうため、何とかこの方法でやりたいのですが、何かよい方法はありませんでしょうか? ちなみに次のようなASPファイルをしてみましたが、うまくいきません。 <% Response.Content-Type="application/vnd.ms-excel" Response.Write "1,2" & vbNewLine Response.Write "3,4" & vbNewLine %> また、「vnd.ms-excel」を「oct-stream」でもだめでした。 何かよい知恵をお貸しください。

  • ファイルダウンロードの開くで、CSVファイルが開けない

    表記の件についてかなり困っています。 教えてください。 【環境】  Windows2000 SP4 + ASP 【内容】  現在CSVファイルをダウンロードする仕組みをASPで作成しています。 とりあえず、ダウンロードダイアログがでてくるところまではでき、保存ボタンでも正常に保存できるところまではできたのですが、開くボタンをクリックすると、EXCEL(CSVをEXCELに関連付けしているため)が起動された後に、 ”出力ファイル名[1].csv”が見つかりません。という エラーとなり表示されません。 この原因は何なのでしょうか? 宜しくお願いします。 【ロジック】 ダウンロードロジックは以下のようにしています。 Response.ContentType = "application/octet-stream" Response.AddHeader "content-disposition","attachment; filename=光彩.csv" strFilePath = "C:\Inetpub\wwwroot\CoreSt\光彩.csv" Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath Response.BinaryWrite objStream.Read objStream.Close Set objStream = Nothing

  • csvファイルのダウンロード

    phpでサーバーにあるCSVファイルをダウンロードさせる処理で、ファイルをダウンロードするとHTML部分のソースがファイルに書きこまれてしまっています。調べてみたのですが、解決出来ませんでした。お願いします まずサーバーにあるCSVファイルにsqLの結果を書き込み、その後 header ("Content-Disposition: attachment; filename=ファイル名"); header ("Content-type: application/x-csv"); readfile (ファイル名); という処理でダウンロードさせようとしています。 サーバーのCSVはデータの書き込みが成功しているのですが、 そのファイルをローカルにダウンロードして中身を確認すると、 XXX,XXX,XXX XXX,XXX,XXX <html> <head> ・・・ のような内容のファイルになっていました。

    • 締切済み
    • PHP
  • ASPでCSV出力をするときにエラーが...

    ASPを使ってデーターベースにあるデーターをCSVファイルとして出力するスクリプトを組んでいます。 単純に Response.ContentType = "text/csv" Response.AddHeader "Content-Disposition","filename=" & "Data.csv" Response.Write "Date,Name,Code" & vbNewLine Do  Date=rsDataOutput("Date")  Name=rsDataOutput("Name")  Code=rsDataOutput("Code")  Response.Write Date & "," & Name & "," & Code & vbNewLine  rsDataOutput.MoveNext  If rsDataOutput.EOF Then   Exit Do  End If Loop といった形で出力しているのですが、出力されるファイルサイズが4Mを越えると、「HTTP500内部サーバーエラー」と表示されて出力できません。 ASPでCSVファイルを出力するのに、ファイルのサイズの上限があるのでしょうか?

  • CSVファイルのダウンロードについて

    サーバー上にアップしたcsvファイルにアクセスすると ダウンロードの確認ダイアログが出ずに 画面上にテキストベースで表示されてしまいます。 フォルダオプションの設定で ダウンロード後に開くを確認するのチェックボックスを チェックしましたがうまくいきません。 宜しくお願いします。 ※Webサーバー・・・JRUN4 <-- sample.jsp --> <% response.setContentType("application/octet-stream-dummy; charset=iso-2022-jp"); %> <% response.setHeader("Content-Disposition","inline; filename=aaa.csv"); %> top.location.href=~aaa.csv ← ファイルのフルパス

    • ベストアンサー
    • Java
  • ASPからファイルダウンロード

    Win2k+IISでASPプログラムを組んでいます。 A.aspのページでボタンを押すとA.aspないのDownLoad関数実行してファイルをダウンロードするプログラムです。 一回目はうまくダウンロードできますが,それが終わった後A.asp内のボタンを押してもダウンロードが出来ません。 これはなぜでしょうか。 (1)怪しいと思うところはA.aspページで全て処理しているからかな~と思います。 A.asp function download() Response.AddHeader "Content- Disposition","attachment;filename=aa.csv" Response.ContentType = "application/octet-stream" Response.Write( "AAAAaaa" & "," ) Response.Write( "BBBaaa" & "," ) Response.End() End function

  • CSVダウンロードでウィンドウが出たままに

     親画面から子画面を表示させ、その子画面から、CSVダウンロードをさせることをやろうとしています。 下記のようなASPを子画面から呼んだところ、ダウンロードには成功しましたが、windowsXPではダウンロードのASPは閉じてくれるのですが、windows2000ではダウンロードのASPは表示されたまま(空白のウィンドウ)になってしまいました。 子画面ではJavaScriptでwindow.open("DL.asp","XXXX") とやっています。 -DL.asp-------------------------- Response.AddHeader "Content-Disposition", "attachment; filename=XXXX.csv" Response.ContentType = "application/octet-stream-dummy" Response.write "xxxx" Response.End --------------------------------- できれば、ダウンロード終了後には空白のウィンドウがでないようにしたいのですが、どうにかできないでしょうか。。。 どうにか対処できないでしょうか・・・

  • ファイルのダウンロード

    こんにちは CSVファイルをダウンロードさせるページを作成 しています。 しかし、ファイル名がaspファイルになってしまいます。 いろいろ調べてみたのですが、原因がつかめなかったので解決策を教えて下さい。 ソースは下記の通りです。 ================================ <% @Language="VBScript" %> <HTML> <HEAD> <TITLE>CSV出力</TITLE> </HEAD> <BODY> <% 'CSV出力 Response.ContentType = "application/octet-stream" Response.AddHeader "Content-Disposition","attachment; filename=test.csv" Response.write Session.Contents("USER_NO") & "," Response.write Session.Contents("SS_BUCD") & "," Response.writeline Session.Abandon Response.End %> 【メッセージを記入予定】 </BODY> </HTML> ================================ HTMLが含まれているのが問題なのでしょうか? しかし、HTMLを取り除いても現象が変わりませんでした。 よろしくお願い致します。

  • Csvから1行ずつ変数に格納するには;

    いつもお世話になっています。 次のようなcsvファイルがあります。 会員番号,パスワード,データ1,データ2,データ3 1234567,1111,1970/1/1,1990/4/1,A 1111111,1,1960/1/1,1985/4/1,AB ・ ・ ・ このcsvファイルをExcelのVBAで次のようなコードで読みとろうとしています。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFile("csvファイル名") Set ts = f.OpenAsTextStream(1, -2) ssk = ts.readline readlineは1行だけ読み込むと覚えているのですが、なぜか変数sskにはすべての行が連結された状態で格納されてしまいます。 2回目以降のreadlineでは「ファイルにこれ以上データがありません。」と出ます。何か根本的に間違っているのでしょうか;; このようなcsvファイルを、正しく1行ずつ変数に格納する方法にはどのようなものがありますでしょうか。 よろしくお願いします。

  • pl/sqlでcsvファイルダウンロード

    Oracleアプリケーションサーバーを利用しています。 Oracle8i。 PL/SQLから特定のテーブルのデータをCSVダウンロードさせるようにしたいのですが、ファイル名の特定ができません。 処理順序  declare    略  begin    owa_util.mime_header('text/csv', FALSE);    owa_util.http_header_close;    動的SQLを利用して一行ずつhtp出力    end 実行するとダウンロードを促すダイアログが表示されますが、そのとき表示されるファイル名がパッケージ名になっています。ソース中で任意にファイル名をつけたいのですがどうしたらよいでしょうか? または、ブラウザにデータを表示させたEXCELを表示させるといった方法でもよいです。(一行にカンマ区切りのデータが収まってしまうのはNG)   よろしくお願いいたします。

専門家に質問してみよう