初めての質問を失敗したので、私はそれが間違ってやっているなら、私に知らせて...のC#MVC PDFのダウンロードは、Androidクロムにここ
私のC#のMVC5アプリは、ユーザーがPDFファイルをダウンロードすることができます。それは私のアンドロイド携帯電話を除いて素晴らしい作品です。私はクロムを使用しており、OSにPDFを処理させています。 GoogleドライブアプリのPDFビューアのビルドを使用しているようです。
ファイルへの直接リンクを使用すると正常に動作しますが、コントローラのアクションでダウンロードすると「ファイルが無効です」というエラーが発生します。私はこの質問のテストケースに単純化しました。
public ActionResult IndirectTestFile()
{
string filename = "document.pdf";
var disposition = new System.Net.Mime.ContentDisposition("inline") { FileName = filename };
Response.AppendHeader("Content-Disposition", disposition.ToString());
string serverFilename = Server.MapPath("~/files/direct/" + filename);
return File(serverFilename, "application/pdf");
}
と私のHTML::
//This fails:
<a href="/report/indirectTestFile">Indirect link to file</a>
//This works:
<a href="/Files/direct/Document.pdf">Direct link to file</a>
すると、私はこれらのリクエストのヘッダーを取得するには、Windows(デスクトップ)Chromeを使用してい
だからここに私のアクションメソッドです。
ここに直接リンク用応答ヘッダだ:
HTTP/1.1 200 OK
Content-Type: application/pdf
Last-Modified: Thu, 07 Jul 2016 11:46:47 GMT
Accept-Ranges: bytes
ETag: "b8a3dd3d45d8d11:0"
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Thu, 07 Jul 2016 12:33:05 GMT
Content-Length: 51793
そしてMVCのアクションへのリンクのためのレスポンスヘッダ:
HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/pdf
Server: Microsoft-IIS/10.0
Content-Disposition: inline; filename=document.pdf
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 07 Jul 2016 12:34:09 GMT
Content-Length: 51793
私はそこに任意の大きな違いは表示されませんが、1であります確実に動作し、他方は確実に故障する。
これは破損したダウンロードではありません。 Windows上で「悪い」PDFをダウンロードしてアンドロイド電話にコピーすると、同じビューアが表示されます。
誰でもこれを見る前に?助けてくれてありがとう。
私はこの同じ正確な問題を抱えています。あなたが何かを見つけたら更新を投稿しますか?私は研究を続けるつもりです。 – Danation
これはContent-Dispositionヘッダーが原因であるようです。私はそれを働かせるために様々なことを試みたが、私は多くの運がなかった。それをインライン化しようとしないと、Chromeは単にそれをダウンロードします。 – Danation
Content-Dispositionで見た唯一の違いは、添付ファイルに設定した場合、ダウンロードするようにChromeに指示しているため、ダウンロードしてGoogleドライブアプリに渡す必要はありません。 – EamonnM