0

wcf/wcf Web サービスを使用して画像をアップロードする例を教えてください。

私のプロジェクトでは、WCF を使用して画像をアップロードしたい

4

2 に答える 2

2

基本的に、WCFストリーミングを使用する必要があります。

[ServiceContract]
public interface ITransferService
{ 
    [OperationContract]
     void UploadFile(RemoteFileInfo request); 
}

public void UploadFile(RemoteFileInfo request)
{
    FileStream targetStream = null;
    Stream sourceStream =  request.FileByteStream;

    string uploadFolder = @"C:\\upload\\";

    string filePath = Path.Combine(uploadFolder, request.FileName);

    using (targetStream = new FileStream(filePath, FileMode.Create, 
                          FileAccess.Write, FileShare.None))
    {
        //read from the input stream in 65000 byte chunks

        const int bufferLen = 65000;
        byte[] buffer = new byte[bufferLen];
        int count = 0;
        while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
        {
            // save to output stream
            targetStream.Write(buffer, 0, count);
        }
        targetStream.Close();
        sourceStream.Close();
    }
}
于 2012-06-19T13:40:12.440 に答える
0

最も簡単な方法は、イメージを送信する前にバイト配列に変換し、送信先サイトでイメージに戻すことです。

これを行うための 2 つの方法を次に示します。

public byte[] ImageToByteArray( Image image)
{
  var ms = new MemoryStream();
  image.Save(ms, ImageFormat.Png);
  return ms.ToArray();
}

public static Image ByteArrayToImage(byte[] byteArray)
{
  var ms = new MemoryStream(byteArray);
  return Image.FromStream(ms);
}

つまり、Web サービスは次のようなメソッドを持つことができます。

public void UploadImage( byte[] imageData )
{
  var image = ByteArrayToImage( imageData );
  //save image to disk here, or do whatever you like with it
}
于 2012-06-19T10:46:36.993 に答える