【发布时间】:2013-05-08 14:56:36
【问题描述】:
返回文件时有什么区别
public Stream getFile(string filename){
Stream s = _getFileStream(filename);
Response.AddHeader( "Content-Disposition", "attachment;filename=" + filename+ ";" );
return s;
}
和
public void getFile(string filename){
byte[] b = _getFileBytes(filename);
Response.AddHeader( "Content-Disposition", "attachment;filename=" + filename+ ";" );
Response.BinaryWrite(b)
}
以及问题here中提供的方法。
我遇到的问题是,有时用户上传的图像的某些部分出现乱码。奇怪的是我无法在本地重现该问题 - 仅当应用程序位于 www 时。
我的想法是,也许由于我的资源是本地的,所以在流式传输数据时我不会看到问题,而且我将内容流式传输回客户端的方式不正确。那么返回文件的“正确”(或推荐)方式是什么?
【问题讨论】:
-
第一个函数不写入和数据。第二个在
void函数中返回未声明的变量s。 -
糟糕,我没有校对。这两个功能都对我有用。我只想知道一个是否比另一个更好以及为什么。
-
如果你将 WCF(我认为,基于问题中的标签)与普通的 ASP.NET 混合 - 你不应该这样做。要么使用完整的 ASP.NET(忘记
[ServiceContract]和朋友),您可以在其中使用 Response 对象,或者使用完整的 WCF(返回Stream,但使用WebOperationContext.Current.OutgoingResponse.Headers添加返回的标头。 -
我正在通过
HttpContext.Current.Response访问响应。我想走 WCF 路线并避免使用 ASP.net 的东西。
标签: c# wcf web-services file stream