在C#中传输图像的最佳方式是什么?
- 位图对象
- 字节数组
- 图像对象?
在C#中传输图像的最佳方式是什么?
并没有一种单一的“最佳”方式。如果有的话,那可能只有一种方式。这真的取决于您的情况、需求和优先事项。
话虽如此,我会尽可能地使用Base64编码,因为它既有趣又容易! :)
public Stream GetImage(string name)
{ ... }
如果你使用的是纯SOAP协议,你需要坚持使用像byte[]这样的原始数据类型。这是一种性能较差的选项,但实际上并没有更好的方法。你可能需要将文件分成多个部分以使其适用于所有客户端。由于一些SOAP客户端不允许大型响应,因此我们曾经将响应分成30k的块。
传输图像的最佳方式是不使用以上任何一种方法,而是直接向图像发出HTTP请求,并避免所有这些麻烦。这是我们现在使用的方法,无需编码、无需客户端处理,直接流式传输到硬盘。你需要检查你的具体用例以确定是否可以应用此方法。
我最近使用了WCF服务来实现这个功能,并选择使用Byte[]作为传输文件的方法,因为它非常容易实现:
public byte[] DownloadFile(string fileName)
{
var stream = System.IO.File.OpenRead(fileName);
byte[] fileContent = new byte[stream.Length];
stream.Read(fileContent, 0, fileContent.Length);
return fileContent;
}
上面的示例很简单,因为我没有直接向 WCF 服务传递文件名,但是我相信你已经有了大致的想法=)
你也可以只返回图像的URL,然后让客户端发起原始HTTP调用以获取图像。
谢谢
VM