创建用于接受图像的 Web 服务的最佳方法是什么。图像可能很大,我不想更改 Web 应用程序的默认接收大小。我写了一个接受二值图像但我觉得必须有更好的选择。
elgrego
问问题
2916 次
2 回答
4
这个图像在哪里“生活”?它可以在本地文件系统还是在 Web 上访问?如果是这样,我建议让您的 WebService 接受 URI(可以是 URL 或本地文件)并将其作为 Stream 打开,然后使用 StreamReader 读取它的内容。
示例(但将异常包装在 FaultExceptions 中,并添加 FaultContractAttributes):
using System.Drawing;
using System.IO;
using System.Net;
using System.Net.Sockets;
[OperationContract]
public void FetchImage(Uri url)
{
// Validate url
if (url == null)
{
throw new ArgumentNullException(url);
}
// If the service doesn't know how to resolve relative URI paths
/*if (!uri.IsAbsoluteUri)
{
throw new ArgumentException("Must be absolute.", url);
}*/
// Download and load the image
Image image = new Func<Bitmap>(() =>
{
try
{
using (WebClient downloader = new WebClient())
{
return new Bitmap(downloader.OpenRead(url));
}
}
catch (ArgumentException exception)
{
throw new ResourceNotImageException(url, exception);
}
catch (WebException exception)
{
throw new ImageDownloadFailedException(url, exception);
}
// IOException and SocketException are not wrapped by WebException :(
catch (IOException exception)
{
throw new ImageDownloadFailedException(url, exception);
}
catch (SocketException exception)
{
throw new ImageDownloadFailedException(url, exception);
}
})();
// Do something with image
}
于 2008-09-19T19:41:55.683 回答
0
您不能使用 FTP 将图像上传到服务器,然后当服务器(以及 WCF 服务)完成后可以轻松访问它?这样你就不需要考虑接收大小设置等。
至少,我是这样做的。
于 2010-04-06T07:10:37.863 回答