返回流和写入HTTP输出流之间的区别

本文关键字:输出流 之间 区别 HTTP 返回 | 更新日期: 2023-09-27 18:12:54

在返回文件时

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

和问题中提供的方法

我遇到的问题是,有时用户上传的图像部分出现乱码。同样奇怪的是,我无法在本地重现这个问题——只有当应用程序在www上时。

我的想法是,也许因为我的资源是本地的,所以在流数据时我不会看到问题,并且我将内容流回客户端的方式是不正确的。那么,返回文件的"正确"(或推荐)方式是什么呢?

返回流和写入HTTP输出流之间的区别

我做了两个改变就解决了这个问题。

  1. 我接受了carlosfiguera所说的并将HttpContext.Current.Response.AddHeaders(...)更改为WebOperationContext.Current.OutgoingResponse.Add(...)
  2. 在我的WebConfig中,我找到了binding标签,我的服务将bindingCOnfiguration设置为并将transferMode更改为"流式"

这两个变化使我的图像显示正确。