5

私は今日問題に遭遇しました。私にとっては奇妙ですが、C#分野の専門家にとってはそうではないかもしれません。

私はこのように呼ばれる関数を持っていますDownload(コードの一部!)

public void Download (string path){
  HttpContext.Current.Response.ContentType = "application/octet-stream";

  try {
           ....//process a 'filePath' variable using the 'path' parameter

               using ( FileStream sourceFile = new FileStream( filePath, FileMode.Open ) ) {
                 ...

                  HttpContext.Current.Response.AddHeader( "Content-Disposition", "attachment; filename=" + Path.GetFileName( filePath ) );

                  HttpContext.Current.Response.AddHeader( "Content-Length", fileSize.ToString() );

                  HttpContext.Current.Response.BinaryWrite( getContent );
               }
           ...

}

path/変数に記載されて保存されているファイル名に次filePathのようなスペースが含まれている場合

PR SimpleTest.xls

ダウンロードボックスにはPR、何も追加されていないようなファイル名が含まれています。

ここに画像の説明を入力

そのファイル名にスペースが含まれていない場合( のようにPR_SimpleTest.xls)、ヘッダーが付属してPR_SimpleTest.xlsおり、そのようにダウンロードできます (完全なファイル名に拡張子が表示されます)。

ファイル名にスペースが含まれている場合の問題を解決する解決策はありますか?

4

4 に答える 4

13

http ヘッダー スペースを Google 検索すると、ファイル名を引用符で囲むことを提案するこのナレッジ ベースの記事が見つかります。例えば

HttpContext.Current.Response.AddHeader(
    "Content-Disposition",
    "attachment; filename=\"" + Path.GetFileName( filePath ) + "\"");
于 2012-09-20T06:37:01.337 に答える
0

HttpContext.Current.Response.AddHeader( "Content-Disposition", "attachment; filename=\"" + filePath + "\"");

于 2014-02-07T07:23:52.397 に答える
0

Firefox を使っていると思います。このリンクを見てください:ファイルの問題のダウンロード

Response.AppendHeader("content-disposition", "attachment; filename=" + Server.UrlEncode(strFileName))

また、 ASP.NET MVC のファイルのアップロードとダウンロードおよび ASP.NET MVCカスタム ファイル ダウンロード アクション結果の記述も参照してください。MVC では、特別なアクションの結果を使用できます。

于 2012-09-20T06:38:03.170 に答える