0

我有一个 MVC 控制器,它返回一个 File 结果如下

<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>

我尝试了多种方法,但似乎无法使结果有效。

我虽然通过将结果更改为 byte[] 来接近这篇文章,但仍然没有喜悦,因为这似乎没有返回所有字节。 从 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