- - PR -
CSVデータをDownLoad時に開くと0バイトになる?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-26 18:57
ASP.NETでWEBサーバからCSVファイルをDownloadするプログラムを作っております。
ここで、 "ファイルのダウンロード"ダイアログが開いた後、 "開く"ボタンを押下すると0バイトのテキストが表示されます。 "保存"ボタンでローカルに保存した後、ダウンロードしたファイルを 開くと正しくデータが表示されるのですが、何かロジックが足りないのでしょうか? 原因をご存知の方、ご教授御願いします。 環境:WindowsXP ServicePack Visual Studio2005 尚、ダウンロード部分のロジックは以下の通りです。 ' ダウンロード Dim sjisEnc As Encoding = Encoding.GetEncoding("Shift_JIS") Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.ContentType = "application/octet-stream;charset=Shift_JIS" Response.AddHeader("Content-Disposition", "attachment; filename=" & attchFileNm) Response.HeaderEncoding = sjisEnc Try Response.BinaryWrite(sjisBytes) ApplicationInstance.CompleteRequest() Response.Flush() Response.End() Catch ex As Exception Response.Clear() If Not TypeOf ex Is System.Threading.ThreadAbortException Then Throw ex End If End Try | ||||||||
|
投稿日時: 2008-06-27 05:54
(提示のソースと違うのは太字部分だけです)
| ||||||||
|
投稿日時: 2008-06-27 16:13
すみません、ソースの提示が一部抜けていました。
正確には以下のようになります。 データをバイト配列に展開しています。 補足として、クライアントへDownload以前はファイル等に保存されておらず サーバ側で加工したデータ(sjis文字列)をバイト配列に展開して渡しています。 コード:--------------------------------------------------------------- Dim sjisEnc As Encoding = Encoding.GetEncoding("Shift_JIS") Dim utf8Enc As Encoding = Encoding.UTF8 Dim utf8Bytes As Byte() = utf8Enc.GetBytes("abc") Dim sjisBytes As Byte() = Encoding.Convert(utf8Enc, sjisEnc, utf8Bytes) ' ダウンロード Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.ContentType = "application/octet-stream;charset=Shift_JIS" Response.AddHeader("Content-Disposition", "attachment; filename=" & attchFileNm) Response.HeaderEncoding = sjisEnc Try Response.BinaryWrite(sjisBytes) ApplicationInstance.CompleteRequest() Response.Flush() Response.End() Catch ex As Exception Response.Clear() If Not TypeOf ex Is System.Threading.ThreadAbortException Then Throw ex End If End Try ----------------------------------------------------------------------- | ||||||||
|
投稿日時: 2008-06-27 21:24
WindowsXP ServicePack 2 Visual Studio2005 (Visual Web Developer2005でも同じ) Internet Explorer 7
Dim sjisBytes As Byte() = sjisEnc.GetBytes("abc") だけでいい気がしますが。 |
1