@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ダウンロード処理

投稿者投稿内容
ゴン
会議室デビュー日: 2003/12/07
投稿数: 4
投稿日時: 2003-12-10 12:56
いつも参考にさせて頂いております。
言語C# ASP.NetでWebアプリケーションを開発しています。

ファイルのダウンロード処理を作成しているのですが、
フレームで切られた画面からのファイルダウンロード時に
ファイル名が文字化けをおこしてしまい困っております。

フレームで切られていない画面の場合は正常に動作します。

下記のコードがダウンロード処理の部分になります。

Private Sub FileDn()
Dim strFilePath As String = "D:\\test.xls"
Dim strDNName As String = "テスト.xls"
Dim strFileName As String

With Response
.Clear()

'//設定
If Regex.Match(Request("HTTP_USER_AGENT"), "^MSIE 5.5;").Success Then
' //IE5.5用
.ContentType = "application/octet-stream-dummy"
Else
' //それ以外
.ContentType = "application/octet-stream"
End If

strFileName = System.Web.HttpUtility.UrlEncode(strDNName)

.AddHeader("content-disposition", "attachment; filename=" + strFileName)

.WriteFile(strFilePath)
.End()
End With
End Sub

どなたか、解決方法を知っている方がおられましたら
ご教授よろしくお願い致します。
kagura
常連さん
会議室デビュー日: 2003/03/26
投稿数: 27
投稿日時: 2003-12-11 12:19
引用:

Dim strDNName As String = "テスト.xls"


のファイル名指定を
Dim strDNName As String = "dl_test.xls"
と半角で行って見てください。
おそらく化けないハズです。

って事で、それが原因であれば文字コード変換を行ってください。

Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-12-11 14:29
本題とは関係有りません。

引用:

ゴンさんの書き込み (2003-12-10 12:56) より:

言語C# ASP.NetでWebアプリケーションを開発しています。



記載されているコードは、VB.NETですよね?

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
ゴン
会議室デビュー日: 2003/12/07
投稿数: 4
投稿日時: 2003-12-20 12:54
VB.NETで開発しています。
以前はC#で開発していました。

C#で開発していた当時は
フレームで切られたページからのダウンロードは
行っていなかったので気がつきませんでした。

ゴン
会議室デビュー日: 2003/12/07
投稿数: 4
投稿日時: 2003-12-20 13:01
kaguraさん ご指摘ありがとうございます。

確かに半角英数字をファイル名に用いれば
文字化けはおこさないのですが、
ファイル名がどうしても2バイト文字列になって
しまう仕様なので・・・
karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2003-12-21 02:34
フレームの文字コードとフレーム内のページの文字コードが異なっている、ということはないですか?

以前、ページの文字コードと外部スクリプトの文字コードが異なってスクリプトエラーになった経験があります。

フレームがShift-JISで、ASPXがUTF-8とか・・・。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-12-22 14:00
こんにちは。
興味のある話題なので、久しぶりに書き込んでみます。

私の場合はPDFのデータでしたが、ゴンさんと同じように
AddHeader("content-disposition", "attachment; filename=" + strFileName)
などと名前を指定してクライアントにダウンロードさせようとしたのですが、やはりファイル名に日本語を使うと文字化けしてしまいました。(IEでアクセスすると)

AddHeaderでヘッダに書き込むと、おそらくUTF-8になるのだろうと思います。
ですが、IEではヘッダのUTF-8は認識できない、ということではないでしょうか。
多分ですが、ヘッダではASCII文字しか使えないと思いましたので、読めないIEを責めることはできないと思います。
aspxファイルをUTF-8に変更してみましたが同じでした。

ちなみに、他のブラウザー(Opera)でそのページを見てみたところ、文字化けを起こさずに日本語のファイル名が表示されました。

Byteの配列などを直接ヘッダに書くような方法があれば、日本語のstringをShift-Jisのバイト配列に変換して書くこともできるんでしょうが。
それともASCII文字以外をASCII文字で表すような方法があるんでしょうかね。(メールのSubject部分みたいな)
taka@toinx
会議室デビュー日: 2003/12/22
投稿数: 1
投稿日時: 2003-12-22 16:52
この件に関してはこちらに情報がありますよ。
http://support.microsoft.com/default.aspx?scid=kb;ja;436616

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