3

私は初めての投稿なので、投稿テクニックについての無知を許してください。私は何時間も探していましたが、これに対する答えが見つからないようです。部屋の賢い人たちが助けてくれることを願っています? 複数のクラウド サービス API に接続する .net MVC 4 で記述された Web アプリケーションがあります。その後、ユーザーはこの Web アプリからファイルをダウンロードできます。Android を除くすべてのプラットフォームでこれを動作させることができました。Android でファイルをダウンロードしようとすると、ハングし、最終的に失敗します。ダウンロード中はファイル名がありますが、<unknown> と表示されます。誰かがこれに対する解決策を持っていますか? 私が使用しているコードは次のとおりです。

if (String.IsNullOrEmpty(type))
{
    type = "application/octet-stream";
}

byte[] file = openDropBoxFile(path, filename);

if (file != null)
{                    
    return File(file, type, filename);
}

Slack Shot に感謝します。悲しいことに、Android での動作は変わりませんでした。ソリューションを間違って実装した場合に備えて、コードを次のように変更しました。

if (String.IsNullOrEmpty(type))
{
    type = "application/octet-stream";
}        

byte[] file = openDropBoxFile(path, filename);
if (file != null)
{
    var cd = new System.Net.Mime.ContentDisposition
    {
        FileName = filename,
        Inline = false,
    };
    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(file, type);
}

この問題に関する詳細情報。Android 版 Firefox ではダウンロードできましたが、ネイティブ ブラウザや Android 版 Google Chrome では動作しませんでした。

最後の試行で報告されたヘッダー (長さを指定せずに試し、代わりにチャンク転送エンコードを使用しました):

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 45113
Content-Type: application/pdf
Server: Microsoft-IIS/8.0
Content-Disposition: attachment; filename="testfile.pdf"
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sat, 09 Nov 2013 17:55:40 GMT

更新: 問題の一部を解決しました!!

SSL をオフにすると、ダウンロードは正常に機能することがわかりました。誰でもこれに遭遇しますか?

4

1 に答える 1

0

Content-Disposition ヘッダーを追加してみてください。

       var cd = new System.Net.Mime.ContentDisposition
        {
                // for example foo.bak
                FileName = "Summary.csv",

                // always prompt the user for downloading, set to true if you want 
                // the browser to try to show the file inline
                Inline = false,
        };
        Response.AppendHeader("Content-Disposition", cd.ToString());
        return File(model.SummaryDownload.Content().ToArray(), "text/csv");
于 2013-11-09T03:32:07.327 に答える