- - PR -
ファイルダウンロード時に「HTTP 500 - 内部サーバー エラー」になります
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-10-24 11:57
IIS+ASP+BASP21でWebサーバ(2003Server)からファイルをダウンロードするプログラミングをしています。
ダウンロードするファイル名に、2バイト文字やカナ文字が含まれていない場合は正常にダウンロードが終了するのですが、ファイル名に2バイト文字等が含まれている場合、上記エラーが表示されてしまいます。 また、手元のPC(http://localhost/...)では、ファイル名に2バイト文字等(下記ソースのbbbbb部分)が含まれていても正常にダウンロード(ファイル保存)できるので困っております。 (aaaaa部分は半角英数字です) 以下にソースファイル(.asp)を記載するので、解決策等をご存じの方がいらっしゃればご教授下されば幸いです。 ━━━━━ file_download.asp ━━━━━ <%@ Language=VBScript %> <% '--- file_download.asp?dir_name=aaaaa&file_name=bbbbb.xxx --- Dim dname Dim fname 'dir_name = 保存先ディレクトリ名 dname = Request.QueryString("dir_name") 'file_name = ファイル名 fname = Request.QueryString("file_name") Response.ContentType = "application/octet-stream;name=" & fname Response.AddHeader "Content-Disposition","attachment;filename=" & fname Set objBasp = Server.CreateObject("Basp21") bydata = objBasp.BinaryRead(Server.MapPath("../_file/" & dname & "/" & fname)) Set objBasp = Nothing Response.AddHeader "Content-Length", ubound(bydata) + 1 Response.BinaryWrite bydata %> |
|
投稿日時: 2007-10-24 14:08
ファイル名をURLエンコード。
しかし、ダウンロードファイル名に日本語を使うことはお勧めしませんね。 http://support.microsoft.com/kb/816868/ http://support.microsoft.com/kb/436616/ja http://support.microsoft.com/kb/930938/ja |
|
投稿日時: 2007-10-26 09:53
こういうスレッドがあったんですね。知らなかった。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17526&forum=7&2 #先人の方々に感謝しつつ。 |
|
投稿日時: 2007-10-26 11:40
回答ありがとうございます。
<% Dim dname Dim fname dname = Request.QueryString("dir_name") fname = Request.QueryString("file_name") filePath = Server.MapPath("../_file/" & dname & "/" & fname) Set bobj = Server.CreateObject("basp21") binData = bobj.BinaryRead(filePath) Response.AddHeader "Content-Type", "application/vnd.ms-excel;charset=Windows-31J" Response.AddHeader "Content-Disposition", "attachment; filename=" + fname Response.BinaryWrite binData Response.End %> 試してみましたが、 dir_name = aaa file_name = book1.xls の場合はファイルダウンロードのボックスが表示され、「開く」「保存」ともに正常にできました。 でも、 dir_name = aaa file_name = てすと.doc の場合は「HTTP500エラー」表示のためボックスすら表示されませんでした。 ※dir_nameは半角英数字のみです。 技術的に不可能なことなんでしょうかね…。 |
1