0

次のようにファイルの結果を返すMVCコントローラーがあります

<pre>
public ActionResult GetPdf(string id)
        {
            string fileName = Server.MapPath("Somepdf.pdf");
            FileInfo info = new FileInfo(fileName);
            return File(info.OpenRead(), "application/pdf");
        }
</pre>

これは iOS アプリによって読み取られ、正常に動作します。

しかし、Amazon S3 からファイルをストリーミングするようにこれを変更したいと考えています。S3 からストリームを簡単に取得できますが、メソッドで何を返しても、iOS アプリは気に入りません。

<pre>
Stream pdfFrom = S3Interface.getstream("Pdfs/somepdf.pdf");
return File(pdfFrom, "application/pdf", "somepdfname.pdf");
</pre>

私は多くの方法を試しましたが、結果が有効になるようには見えません。

結果をバイト[]に変更することでこの投稿に近づきましたが、すべてのバイトが返されないように見えるため、まだ喜びはありません。 File.OpenRead() からストリームを返す

System.IO.MemoryStream data = new System.IO.MemoryStream();
System.IO.Stream str = S3Interface.getstream("Pdfs/somepdf.pdf");

str.CopyTo(data);
data.Seek(0, SeekOrigin.Begin);
byte[] buf = new byte[data.Length];
data.Read(buf, 0, buf.Length);

return data.ToArray();

私が基本的に必要としているのは、File.OpenRead に相当するものですが、ストリーム用です。

アドバイスをいただければ幸いです

4

0 に答える 0