表記の件についてかなり困っています。
教えてください。
【環境】
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
No.3ベストアンサー
- 回答日時:
すみません、私が聞きたかったのは、「もちろんダウンロードできません。
」とおっしゃる部分、具体的にはどう言う状況なのか、です。ダウンロードダイアログが表示され、ファイル名がおかしいだけで、なぜダウンロードできないのか、そのまま「OK」をクリックすると、エラー表示が出るのか、その表示内容は?、などが知りたかったのです。
いろいろ気になるところはありますが、とりあえず上記を教えていただけるでしょうか。
この回答への補足
>また、「もちろんダウンロードできません。」も、ち>ょっと考えにくいです。ファイル名
>が「ListOut_asp」になってしまったとしても、なぜ
>ダウンロードできないのか、というより、ダウンロー>ドできないとは具体的にはどう言うことですか?エラ>ーが発生するということですか?
度々すみません。最初から順にお話いたします。
まず「ListOut_asp」のダウンロードですが、まず”保存”ボタンをクリックした場合は、次のMSGがでます。
『Internet Explorer では、ListOut.aspを開くことができません。 このインターネットのサイトを開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。後でやり直してください。』
また、”開く”ボタンをクリックした場合は、次のエラーとなり処理は終了します。
『エラー タイプ
ADODB.Stream (0x800A0BBA)
ファイルを開けませんでした。』
まずこの内容の回答でよろしかったでしょうか?
お手数ですが、宜しくお願い致します。
No.6
- 回答日時:
ANo.5のコードを試していただいたのは、原因を絞るためで、つまりサーバー側、クライアント側のどちらに原因があるのかを限定するためのものでしたが、その結果を見る限り、どうやらクライアント側に原因があるようですね。
> ということは、OS,IEなどにより動作がことなるということなのでしょうか?
私が試したところ、WinXP、98、ME、IE5.5、IE6、すべて問題ありませんでした。
なので、そのテストした環境だけの問題なような気がします。
直接的な原因は、キャッシュ保存されていないことが原因です。
見ていないので勘でしかありませんが、単にブラウザの設定によるだけに思えます。
Cache-Controlのno-cacheというのは「キャッシュ保存するな」という指定ですので消したのですが、消したにも関わらず、何らの理由でキャッシュ保存されていないようです。
そうなるとブラウザ設定のほうでキャッシュ保存しないようになっているのでは。
たとえば、IEの設定で、インターネット一時ファイルを「自動的に確認する」に設定、あるいはディスク領域が足りているかどうか、など。
また、同じマシンで別のブラウザでも試されると、より原因が絞られると思います。
あと、成功したWin2000のほうのIEの設定と比べてみる、など。
色々お教えいただきありがとうございました。
各種設定確認しまして、ご指摘の件に関しては
特におかしな点がみつかりませんでした。
更に探求を進めてみようと考えています。
ASPでの開発がまだ続きますので、また何かありましたら宜しくお願い致します。
この度は色々お世話になりました。ありがとうございました。
No.5
- 回答日時:
サーバーのエラーや、ファイル名指定がおかしいとか、「要求されたサイトが~」などのエラーなどは、とりあえず全てなくなったということですね?
となると、出力に至る前の部分など、やはりごく単純なミスが原因のような気がしてしまいます。
以下で試すとどうですか?
※「C:\Inetpub\wwwroot\CoreSt\pp.csv」が存在し、エクセルで開けることを確認しておく
●ASP.Netの場合
<%
Dim strFilePath
strFilePath = "C:\Inetpub\wwwroot\CoreSt\pp.csv"
Response.AddHeader "Content-Disposition","attachment; filename=pp.csv"
Response.WriteFile strFilePath
%>
●ASP
<%
Dim objStream
Dim strFilePath
Const adTypeBinary = 1
strFilePath = "C:\Inetpub\wwwroot\CoreSt\pp.csv"
Response.AddHeader "Content-Disposition","attachment; filename=pp.csv"
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
%>
上記は、とりあえず出力部分のみを、つまり原因を限定することが目的のものですので、変更せずにこのまま試してみてください。
また、他のブラウザや、他のPCから(ネットを介して)ではどうでしょうか。
この回答への補足
ご指摘頂いたソース<●ASP>をそのまま貼り付け
実行してみました。
するとクライアントによって以下のように動きが変化しました。
クアイアントがWinXP+SP2(IE6.0.29)の場合
これまでお話していた通りの現象(EXCELは起動されるのですが、エラーメッセージ【pp[1].csvが見つかりません】が出現します。)でした。
また、クライアントがWin2000(Server,Pro)+SP4(IE6.0.28)の場合
なんと正常にpp[1].csvがEXCELで起動され中身も正しいものが表示されました。
今回は全端末ともEXCEL2000で統一しております。
ということは、OS,IEなどにより動作がことなるということなのでしょうか?
度々申し訳ありません。
宜しくお願い致します。
No.4
- 回答日時:
まず
> ADODB.Stream (0x800A0BBA)
> ファイルを開けませんでした。
というエラーは、ASP側、サーバー側のエラーですよね。
ファイルを開けない、ファイルが見つからないということではないでしょうか。
「ファイル名をASCII文字だけにする」というのは、クライアントにダウンロードさせるファイルであって、サーバーがディスクから読み込むファイルではありません。
「pp.csv」に変更されたときに、
strFilePath = "C:\Inetpub\wwwroot\CoreSt\光彩.csv"
ここも変えてしまいませんでしたか? ↑
あるいは、変えたなら当然、実際のディスク上のファイル「光彩.csv」も「pp.csv」という名前にリネームしておかなければなりません。
> Internet Explorer では、ListOut.aspを開くことができません
というエラーは、単にクライアント側で拡張子「asp」に関連付けられたアプリがないということでしょう。
また、
> このインターネットのサイトを開くことができませんでした
というエラーも、前述のようにサーバーが正しくファイルデータを返せないためです。
つまり、ダウンロードダイアログに表示されるファイル名の問題も、エラー表示も、そもそもそこまで行く前(ファイル読み込み)の時点でエラーが起きて、ヘッダも何も意味がなかった、というだけな気がします。
質問分に載せているコードを、
~attachment; filename=光彩.csv
という部分を、
~attachment; filename=pp.csv
に変更し、実際にサーバーのディスク上にあるファイル名を、
strFilePath = "C:\Inetpub\wwwroot\CoreSt\★"
↑この部分に入れて、実行してみてください。
また、先から出ているキャッシュの問題も、あわせて反映させ(Cache-Control:no-cache を書かない)、さらにクライアント側のディスクキャッシュを一度クリアしてみてはどうでしょうか(C:\WINDOWS\Temporary Internet Files の中をクリア)。
この回答への補足
度々ありがとうございます。
以下にご指摘に従い修正したロジックを転記します。
****ロジック開始****
'Response.AddHeader "Cache-Control", "no-Cache"
Response.CharSet = "Shift_Jis"
filename = "c:\Inetpub\wwwroot\CoreSt\pp.csv"
Set fsobj = CreateObject("Scripting.FileSystemObject")
Set tsObj = fsobj.CreateTextFile(filename,true)
<filenameへCSV出力(長文のため省略)>
tsObj.Close()
Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition","attachment; filename=pp.csv"
strFilePath = filename ←実際に上で設定したフルパスが入っていることは確認済み
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
response.end
****ロジック終了****
この内容と伴に、クライアント側のディスクキャッシュのクリアを実施しました。(c:\windows\temp\
Temporary Internet Files & IEのインターネットオプションのインターネット一時ファイルの削除を実施)
結果動作に変わりはありませんでした。(Excelが起動された後、pp[1].csvが見つかりませんというエラー)
他に心当りありますでしょうか?宜しくお願い致します。
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には、「キャッシュを制限しないことで問題を回避できる」とありますので、この点を確認してはどうでしょうか。
私も試してみたところ、キャッシュを制限していると、確かに、ダウンロードダイアログボックスで、「保存」を選ぶと問題なく、「開く」を選ぶとファイルが見つからない旨のエラーが表示されました。
ようするに、セッション内のみ有効となっているキャッシュが、「開く」の前処理の内部的なダウンロードが完了した時点で、削除されていることが原因だと思います。
キャッシュの制限をしなければ、問題なく開くことができました。
この回答への補足
度々すみません。
>「filename=~」を変えただけで、ダイアログのファ
>イル名がおかしくなってしまうというのは、ちょっと>考えられません。何か他も変えてませんか?
>また、「もちろんダウンロードできません。」も、ち>ょっと考えにくいです。ファイル名が
>「ListOut_asp」になってしまったとしても、なぜダ
>ウンロードできないのか、というより、ダウンロード>できないとは具体的にはどう言うことですか?エラー>が発生するということですか?
ListOut.aspファイルに当ロジックをかいています。
この名前がなぜか「ListOut_asp」とダウンロードダイアログに表示されます。また、条件はやはりファイル名を、日本語名から、”pp.csv”にかえただけで現象が出てきます。(他は特に触っていません。)
実際の原因は、キャッシュの制限ではないかとのご指摘いただいた通りだと私も思い”no-cache”を指定しない(ダウンロード機能が必要な対象画面のみ)ことも試みましたが変化ありませんでした。
”no-cache”以外になにか指定したほうがよいのでしょうか?
あと、EXCELをダウンロードダイアログの出る前に既に起動している状態にすると”開く”で、目的のファイルがきっちり表示されるようです。これは何か関係あるのでしょうか?
色々記述し申し訳ありませんが、宜しくお願いします。
No.1
- 回答日時:
日本語ファイル名をASCII文字だけにしてみると、どうでしょう。
http://support.microsoft.com/default.aspx?scid=k …
あるいはCache-Controlが関係しているとか。
http://support.microsoft.com/?scid=kb;ja;436605& …
ブラウザのキャッシュ(Temporary Internet Files)をクリアしてみると、どうでしょうか。
この回答への補足
早速ありがとう御座います。
>あるいはCache-Controlが関係しているとか
上記内容について確認しましたが、事象は変わりませんでした。(no-Cacheを使用しない。また、inlineを指定すると、ブラウザにCSVがEXCELイメージで表示されてしまうため、要件と異なります。ダウンロードした後、EXCELで開いたイメージにしたいとのことでした。)
また、ファイル名を”pp.csv”等日本語を使用しないパターンにした場合、ダウンロードダイアログで表示されるダウンロード対象ファイル名が、ロジック記述しているソース名(ListOut_asp)となってしまいます。(もちろんダウンロードできません。)
最後にブラウザのキャッシュもクリアしてみましたが、特に変わりがありません。
他に心当たりありますでしょうか?
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの
Excel(エクセル)
-
ASPでこんなエラーが出たんですけど、理由が分かりません・・
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OpenTextFile で書き込みできま...
-
ASPでCSVファイルを作成しダウ...
-
Excelでdatファイルを作成??
-
【Excel VBA】PDFを作成して,...
-
VBAでファイルパスが長すぎてコ...
-
ダウンロード不可PDFファイルは...
-
バッチによるショートカットの...
-
batファイル処理でのテキストフ...
-
Microsoft Access エラー 3051
-
複数のテキストファイルをexcel...
-
Thunderbird ローカルフォルダ...
-
バッチファイルが作成できない
-
マクロでメモ帳に貼り付け
-
複数のテキストファイルをexcel...
-
FFFTPでサーバに新規フォルダが...
-
BASP21のアップロードについて
-
Access2003で「オブジェクト'○○...
-
VBAでFTPファイル転送がうまく...
-
グーグルドライブからコピーし...
-
ASP.NETで、別サーバーへファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OpenTextFile で書き込みできま...
-
ASPでCSVファイルを作成しダウ...
-
ファイルダウンロードの開くで...
-
現在時間と、ファイルの作成時...
-
ヤフーのNYダウの過去データ...
-
ファイルのダウンロード
-
IE6でのダウンロードダイア...
-
CSVファイルダウンロードダイア...
-
CSV形式のファイルをエクセル形...
-
複数のテキストファイルをexcel...
-
Excelでdatファイルを作成??
-
複数のテキストファイルをexcel...
-
【Excel VBA】PDFを作成して,...
-
バッチファイルが作成できない
-
Microsoft Access エラー 3051
-
フォルダ作成用バッチファイル...
-
VBAでファイルパスが長すぎてコ...
-
batファイル処理でのテキストフ...
-
テキストファイルの文字色に色...
-
Refreshで落ちる
おすすめ情報