- PR -

コンソールにバイナリデータを送る

投稿者投稿内容
Ten.
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 67
投稿日時: 2004-06-30 10:22
解決策ではないです。

はずしているかもしれませんが、議論が噛み合ってなさそうなので。

hitさんの件のそもそもの問題はこのあたりのことでは?
[PRB] AddHeader, AppendHeader で日本語ファイル名が文字化けする

この件はよく問題になりますが、以下のどちらかの方法で対応しています。

1.ファイル名に日本語を使わない
2.ファイル名をURLエンコードし、ダウンロードダイアログで必ず「保存」を選ぶ

ご参考になれば
hit
常連さん
会議室デビュー日: 2004/04/01
投稿数: 44
投稿日時: 2004-06-30 10:44
ありがとうございます。

1.日本語を使わないわけにはいけません。
2.の方法でも長い名前(漢字で20文字程度)だとファイル名が短くなります。

ですので、文字化けは解消しますが、ファイル名が削られるわけです。

繰り返しますが、それで、CGIによる解決しかないと考えてます。
根拠は、
(1)いろんなサイトで実現しているところを見ますと、知る限りのサイトではCGIで行ってます。(長いファイル名のダウンロードを行えるところ)
(2)実際に試してそうでした。(前回の回答のとおり)

本題の「VB.netでコンソールにバイナリデータを送る」というのは、できないんでしょうか?
VB.netでできないのであれば、他の言語を使います。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2004-06-30 11:07
こんな感じ
コード:
 Dim b As Byte() = {72, 69, 76, 76, 79, 10, 13}
 Dim st As Stream = Console.OpenStandardOutput
 st.Write(b, 0, b.Length)

きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-06-30 11:33
hitさん、こんにちは。

引用:

1.日本語を使わないわけにはいけません。
2.の方法でも長い名前(漢字で20文字程度)だとファイル名が短くなります。


実験してみました。

【その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にそのまま日本語でファイル名を記述すれば大丈夫そうです。例えばファイルを動的に生成しているような場合であれば、一度サーバ上で出力してやれば良いのではないでしょうか。

引用:

繰り返しますが、それで、CGIによる解決しかないと考えてます。


あまり「〜しかない」とか思い込まない方がいいですよ。多分、他にも方法はあると思います。
hit
常連さん
会議室デビュー日: 2004/04/01
投稿数: 44
投稿日時: 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)
--------------------------------------------------------------------------------
の方法ですっきりできました。

スキルアップ/キャリアアップ(JOB@IT)