[英]What would be the most efficient way of converting a pdf to a stream
我有一个WCF
服务,它将接收一个ID并根据该ID返回一个pdf文件。 我假设执行此操作的最佳方法是将pdf文件转换为某种字符串,然后将其返回。 但是,我不确定要使用哪个流( Stream, Filestream, or MemoryStream
)。
我知道我可以将pdf文件读取到字节数组,然后使用MemoryStream对其进行处理,但是我觉得有一种更有效的方法。
我试图做这篇文章在这里建议的: 如何将pdf转换为内存流
硬编码文件路径以返回如下:
return File(@"C:\MyFile.pdf", "application/pdf");
只是为了看看会发生什么,但是在File
上看到一条错误消息:“'System.IO.File'是'type',但是却像'variable'一样使用。
谁能提供一些见识?
编辑
这是我目前正在努力的方向:
[OperationContract]
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/GetInvoiceFile")]
Stream GetInvoiceFile(string id);
public Stream GetInvoiceFile(string BillingPeriodId)
{
byte[] bytes = File.ReadAllBytes(@"C:\pdf-test.pdf");
return new MemoryStream(bytes);
}
我只是不完全知道如何编辑OperationContract
以返回pdf。 有任何想法吗?
答案取决于您所拥有的。 您似乎将文件的路径作为string
。 您的WCF方法可能返回一个byte[]
。 您需要以某种方式有效地将该路径转换为byte[]
。
您可以使用File.ReadAllBytes(string path)
进行此操作。
WCF还支持流式写入,但是稍微复杂一点,并且对于小文件来说,性能的胜利是可疑的。
您尝试指定MIME类型( "application/pdf"
)的事实告诉我,您实际上并不了解WCF服务和HTTP服务之间的区别。 研究这是您的家庭作业。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.