• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルダウンロードの開くで、CSVファイルが開けない)

CSVファイルの開くボタンをクリックした際にエラーが発生する

tasekiの回答

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

最も気になるのは、 > ファイル名を”pp.csv”等日本語を使用しないパターンにした場合、ダウンロ > ードダイアログで表示されるダウンロード対象ファイル名が、ロジック記述し > ているソース名(ListOut_asp)となってしまいます。(もちろんダウンロー > ドできません。) 「filename=~」を変えただけで、ダイアログのファイル名がおかしくなってしまうというのは、ちょっと考えられません。何か他も変えてませんか? また、「もちろんダウンロードできません。」も、ちょっと考えにくいです。ファイル名が「ListOut_asp」になってしまったとしても、なぜダウンロードできないのか、というより、ダウンロードできないとは具体的にはどう言うことですか?エラーが発生するということですか? それともうひとつ。 > no-Cacheを使用しない。また、inlineを指定すると、ブラウザにCSVがEXCELイ > メージで表示されてしまうため 「Cache-Control:no-cache 」を使用しないだけでは、上記現象にはなりませんよね? inline を指定した場合だと思います。 以下のような書式になっていれば良いとおもいます。 Content-Disposition: inline; filename=pp.csv 参照URLには、「キャッシュを制限しないことで問題を回避できる」とありますので、この点を確認してはどうでしょうか。 私も試してみたところ、キャッシュを制限していると、確かに、ダウンロードダイアログボックスで、「保存」を選ぶと問題なく、「開く」を選ぶとファイルが見つからない旨のエラーが表示されました。 ようするに、セッション内のみ有効となっているキャッシュが、「開く」の前処理の内部的なダウンロードが完了した時点で、削除されていることが原因だと思います。 キャッシュの制限をしなければ、問題なく開くことができました。

ks3662
質問者

補足

度々すみません。 >「filename=~」を変えただけで、ダイアログのファ >イル名がおかしくなってしまうというのは、ちょっと>考えられません。何か他も変えてませんか? >また、「もちろんダウンロードできません。」も、ち>ょっと考えにくいです。ファイル名が >「ListOut_asp」になってしまったとしても、なぜダ >ウンロードできないのか、というより、ダウンロード>できないとは具体的にはどう言うことですか?エラー>が発生するということですか? ListOut.aspファイルに当ロジックをかいています。 この名前がなぜか「ListOut_asp」とダウンロードダイアログに表示されます。また、条件はやはりファイル名を、日本語名から、”pp.csv”にかえただけで現象が出てきます。(他は特に触っていません。) 実際の原因は、キャッシュの制限ではないかとのご指摘いただいた通りだと私も思い”no-cache”を指定しない(ダウンロード機能が必要な対象画面のみ)ことも試みましたが変化ありませんでした。 ”no-cache”以外になにか指定したほうがよいのでしょうか? あと、EXCELをダウンロードダイアログの出る前に既に起動している状態にすると”開く”で、目的のファイルがきっちり表示されるようです。これは何か関係あるのでしょうか? 色々記述し申し訳ありませんが、宜しくお願いします。

関連するQ&A

  • VBクライアントからのサーバーファイルダウンロード

    ファイルをダウンロードするシステム構築で困っております。 サーバーに保存しているPDFファイルをクライアントからダウンロード し、Acrobatで開きたいのですが、ログオンやアプリケーション上での 権限認証のロジックを経由した後にダウンロードさせたいため、http やftpで公開することができません。 また、VB 6.0から開く必要があります。 現在は、 ・サーバー(ASP)側でダウンロードのページを用意する。(後述) ・クライアント(VB6)で用意したページを開く。 ということでファイルのダウンロードとAcrobatの動作はできていますが、 ・ブラウザの画面を閉じることができない。 ・サイトのURLが残る。 ということで問題があります。 サイトのURLを表示せずにダウンロードを行い、ダウンロード後は画面を 閉じるか、ウインドウを表示せずに同一の機能を満たす方法はないでしょ うか? ■実行環境 サーバー Win 2003 SP1 + ASP クライアント Win XP SP2 + VB 6.0 + Internet Explore 6.0 ■サーバーのスクリプト(http://server/download.asp) <% '' ログオン名の取得やログオン名に応じたアクセス制御 '' はこの部分に追加 Dim objStream Dim strFilePath Const adTypeBinary = 1 Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open strFilePath = "d:\folder\pdffile.pdf" Response.AddHeader "Content-Disposition", _ "attachment; filename=pdffile.pdf" objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath Response.BinaryWrite objStream.Read objStream = null %> ■VB6での起動 ret = ShellExecute(hwnd, "Open", "http://server/download.asp", _ "", "", vbHide) よいアドバイスございましたらよろしくお願い致します。

  • ASPでバイナリーファイルをダウンロードさせるには?

    ASPでファイルをダウンロードするスクリプトで、以下の様な例がMicrosoftのページに 掲載されているのですが、 <% 'Set the content type to the specific type that you are sending. Response.ContentType = "application/x-msexcel" Const adTypeBinary = 1 Dim strFilePath strFilePath = "C:\ExcelFiles\Excel1.xls" 'This is the path to the file on disk. Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath Response.BinaryWrite objStream.Read objStream.Close Set objStream = Nothing %> 上記の中の"strFilePath "の部分を、サーバーローカルのハードディスク以外に 出来る方法というのはあるのでしょうか? サーバーのオブジェクトとして、 Set objStream = Server.CreateObject("ADODB.Stream") をセットしているので、この方法では無理だとは思うのですが、同じようにバイナリー ファイル(特に有名なアプリケーションに関連付けされてしまっている拡張子を持つ もの)をダウンロードダイアログを表示して、スクリプトのあるサーバー以外のサーバー 上にあるファイルを明示的にダウンロードできるようにしたいのですが。。。

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

  • 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 --------------------------------- できれば、ダウンロード終了後には空白のウィンドウがでないようにしたいのですが、どうにかできないでしょうか。。。 どうにか対処できないでしょうか・・・

  • 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」でもだめでした。 何かよい知恵をお貸しください。

  • ファイルのストーリーム配布時のファイルサイズ

    IIS6.0 IE6or7 ASP(vbScript) こんにちは。よろしくお願いします. エクセルやワードファイルを直接URLで叩くと ブラウザの中で開いてしまいます. それを避けるために下記のようにしてファイルをストリームとして渡すようにし、問題を回避しようとしました. しかし、ファイルサイズが小さい場合は問題なくDLできるのですが、 1Mを越えたあたりから一瞬でエラー画面になりDLできず、困っています. IISの設定なのか、よくわかりません。 下記以外の方法でも構いませんので、解決方法等ありましたら 御教示願います. Response.AddHeader "Content-Disposition" , " attachment; ilename=" & FileName Response.ContentType = "application/octet-stream;name=" & FileName Set obj = CreateObject("ADODB.Stream") obj.Open obj.Type = 1 obj.LoadFromFile("フォルダパス" & "\" & FileName) Response.BinaryWrite obj.Read() obj.Close

  • CSVファイルダウンロードダイアログのキャンセルイベント取得方法

    こんにちは。 色々調べてみましたが、なぜかどこにも答えが見つかりませんでしたのでご教授よろしくお願いします。 ASPでCSVファイルをダウンロードする際、 Response.AddHeader "Content-Disposition","attachment; filename=AAA.csv;" としてダウンロードダイアログを出力しています。 このダイアログで、キャンセルボタンのクリックイベントと取りたいのですが、どのようにするのでしょうか? キャンセルした場合、以降に続くサーバサイドの処理をスキップさせたいのですが… よろしくお願いします!

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

    こんにちは 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形式でダウンロードさせたいのですが。

    はじめまして。 今回、JSPでデータベースからもってきた情報をcsvでダウンロードさせる仕組をかんがえているのですが、まずは簡単にダウンロードできるのか試しているのですが、ダウンロードまではできたのですが、中身がjspのファイルのコードがそのまま表示されてしまいます。 初心者なので、是非アドバイスをお願いしたいです。 よろしくお願いします。 以下そのコードです。 <%@ page import="java.io.*, java.util.*, java.sql.*, javax.sql.*, javax.naming.*" %> <html> <head> </head> <body> <% response.setContentType("application/octet-stream"); response.addHeader("Content-Disposition","attachment; filename=kibou.csv"); out.println("a,b,c,d"); %> </body> </html>