画像を受け入れるための Web サービスを作成する最良の方法は何ですか。画像は非常に大きい可能性があり、Web アプリケーションのデフォルトの受信サイズを変更したくありません。私はバイナリ イメージを受け入れるものを書きましたが、より良い代替手段が必要だと感じています。
2916 次
2 に答える
4
この画像はどこに「住んでいる」のですか?ローカルファイルシステムまたはWebでアクセスできますか?その場合は、Webサービスで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 に答える