locked
ファイルダウンロード時に『HTTP 500 - 内部サーバー エラー』になります RRS feed

  • 質問

  • IIS+ASP+BASP21でサーバ(2003Server)からファイルをダウンロードするプログラミングをしています。

     

    ダウンロードするファイル名に、2バイト文字やカナ文字が含まれていない場合は正常にダウンロードが終了するのですが、ファイル名に2バイト文字等が含まれている場合、上記エラーが表示されてしまいます。

     

    また、手元のPC(http://localhost/・・・)では、ファイル名に2バイト文字等が含まれていても正常にダウンロード(ファイル保存)できるので困っております。

     

    以下にソースファイル(.asp)を記載するので、解決策等をご存じの方がいらっしゃればご教授下されば幸いです。

     

    <%@ Language=VBScript %>
    <%
    Dim dname
    Dim fname

    dname = Request.QueryString("dir_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
    %>

    • 移動 Wang Huang 2012年10月2日 1:39 (移動元:Internet Information Services 5.x, 6.0 - 全般)
    2007年10月24日 0:48

回答

  • 検証等しておりませんので推測の域を出ておりませんが、ファイル名の取得時文字セットと ASP ファイルの文字セット、あるいはサーバ側文字セットに不一致はありませんでしょうか。

     

    私自身は ASP プログラミングの経験がほとんど無いのですが、ASP 関連のローカライズ時に日本語対応でよく嵌るのにこれがある、と人づてに聞いた記憶があります。

     

    はっきりした情報でなくてすみません。

    2007年10月29日 5:30
  • 私も、 QueryString("dir_name"), QueryString("file_name") にちゃんとしたデータが入ってきてないんじゃないかと思います。
    で、 これはセキュリティ面で非常に脆弱なコードですが、 そこはきっとイントラネット用で気にしていないのであろうとして、 横に置いておくとして。

     

    そもそも、 ダウンロードさせるファイル名に日本語を使うのは、 うまく行かないことはご存知でしょうか?

    現状、 ケースバイケース ( 日本語を使わせない仕様とすることも含めて ) の対応をするしかありません。
    Visual Basic フォーラム » 日本語ファイルのダウンロードについて

    2007年10月30日 2:40
  • はじめまして。だどさんと申します。

     

    私も Basp21 は試していませんが (すみません)、手元の PC でうまくできていて、

    サーバーでうまくいかないということでしたら、どこかの設定で回避できそうですね。

     

    解決策としてよくあるのは、

     

    1.コードページを指定する (日本語932などをページのディレクティブまたは Session で指定してみます)

    2.サーバーの言語設定で、非 Unicode プログラムのときの言語設定を日本語にする

     

    この二つでどうにかならないでしょうか?

     

    ご参考になりましたら幸いです。

     

    -----------------------------------------

    だどさん http://keicode.com/

    2008年11月8日 7:57

すべての返信

  • 検証等しておりませんので推測の域を出ておりませんが、ファイル名の取得時文字セットと ASP ファイルの文字セット、あるいはサーバ側文字セットに不一致はありませんでしょうか。

     

    私自身は ASP プログラミングの経験がほとんど無いのですが、ASP 関連のローカライズ時に日本語対応でよく嵌るのにこれがある、と人づてに聞いた記憶があります。

     

    はっきりした情報でなくてすみません。

    2007年10月29日 5:30
  • 私も、 QueryString("dir_name"), QueryString("file_name") にちゃんとしたデータが入ってきてないんじゃないかと思います。
    で、 これはセキュリティ面で非常に脆弱なコードですが、 そこはきっとイントラネット用で気にしていないのであろうとして、 横に置いておくとして。

     

    そもそも、 ダウンロードさせるファイル名に日本語を使うのは、 うまく行かないことはご存知でしょうか?

    現状、 ケースバイケース ( 日本語を使わせない仕様とすることも含めて ) の対応をするしかありません。
    Visual Basic フォーラム » 日本語ファイルのダウンロードについて

    2007年10月30日 2:40
  • はじめまして。だどさんと申します。

     

    私も Basp21 は試していませんが (すみません)、手元の PC でうまくできていて、

    サーバーでうまくいかないということでしたら、どこかの設定で回避できそうですね。

     

    解決策としてよくあるのは、

     

    1.コードページを指定する (日本語932などをページのディレクティブまたは Session で指定してみます)

    2.サーバーの言語設定で、非 Unicode プログラムのときの言語設定を日本語にする

     

    この二つでどうにかならないでしょうか?

     

    ご参考になりましたら幸いです。

     

    -----------------------------------------

    だどさん http://keicode.com/

    2008年11月8日 7:57
  • こんにちは、フォーラムオペレータ 大久保です。

     

    かさこ さん、その後いかがでしょうか?

    皆様からいろんなポイントをアドバイスいただいているので、ご確認いただければと思います。

    (個人的には、biac さんのご意見が重要だと思います…)

     

    本情報を多くの方と共有するため、まことに勝手ながら皆様のアドバイスに「回答済み」チェックをつけさせていただきました。

    かさこ さんのお手元でなにか進捗があれば追加で投稿してください。おまちしてます!

     

    それでは

     

    2008年12月2日 5:03