- - PR -
コンソールにバイナリデータを送る
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-30 10:22
解決策ではないです。
はずしているかもしれませんが、議論が噛み合ってなさそうなので。 hitさんの件のそもそもの問題はこのあたりのことでは? [PRB] AddHeader, AppendHeader で日本語ファイル名が文字化けする この件はよく問題になりますが、以下のどちらかの方法で対応しています。 1.ファイル名に日本語を使わない 2.ファイル名をURLエンコードし、ダウンロードダイアログで必ず「保存」を選ぶ ご参考になれば | ||||||||
|
投稿日時: 2004-06-30 10:44
ありがとうございます。
1.日本語を使わないわけにはいけません。 2.の方法でも長い名前(漢字で20文字程度)だとファイル名が短くなります。 ですので、文字化けは解消しますが、ファイル名が削られるわけです。 繰り返しますが、それで、CGIによる解決しかないと考えてます。 根拠は、 (1)いろんなサイトで実現しているところを見ますと、知る限りのサイトではCGIで行ってます。(長いファイル名のダウンロードを行えるところ) (2)実際に試してそうでした。(前回の回答のとおり) 本題の「VB.netでコンソールにバイナリデータを送る」というのは、できないんでしょうか? VB.netでできないのであれば、他の言語を使います。 | ||||||||
|
投稿日時: 2004-06-30 11:07
こんな感じ
| ||||||||
|
投稿日時: 2004-06-30 11:33
hitさん、こんにちは。
実験してみました。 【その1】 <A href="長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長いと〜っても長いファイル名.pdf">aaaaaa</a> を、右クリックで保存 →長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長い長いと〜っても長いファイル名.pdf 【その2】 <A href="%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%82%c6%81%60%82%c1%82%c4%82%e0%92%b7%82%a2%83%74%83%40%83%43%83%8b%96%bc.pdf">aaaaaa</a> を、右クリックで保存 →長い長い長い長い長い長い長い長い長い長い長い長い長い.pdf 【その3】 Response.OutputStream に書き込んで、 Response.AppendHeader("Content-Disposition", "attachment;filename="%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%92%b7%82%a2%82%c6%81%60%82%c1%82%c4%82%e0%92%b7%82%a2%83%74%83%40%83%43%83%8b%96%bc.pdf" とした場合 →WebForm1.pdf ちなみにサーバはWin2000、エンコードはshift-jisです。 ということで、アンカタグのhrefにそのまま日本語でファイル名を記述すれば大丈夫そうです。例えばファイルを動的に生成しているような場合であれば、一度サーバ上で出力してやれば良いのではないでしょうか。
あまり「〜しかない」とか思い込まない方がいいですよ。多分、他にも方法はあると思います。 | ||||||||
|
投稿日時: 2004-06-30 14:39
「きくちゃん」さんの投稿に返信
たぶん、実験その1の方法でやったらいいですよ。という意味だと思いますが、 http://localhost/test.htmというふうにWebから開くと、 やはり名前は短くなってしまいます。 私の環境では、「長い長い長い長い長い長い長い長い長い.pdf」というファイル名 になってしまいました。 「cats」の投稿に返信 コード: -------------------------------------------------------------------------------- Dim b As Byte() = {72, 69, 76, 76, 79, 10, 13} Dim st As Stream = Console.OpenStandardOutput st.Write(b, 0, b.Length) -------------------------------------------------------------------------------- の方法ですっきりできました。 | ||||||||
