0

使用 wcf/wcf 网络服务上传图片给我举个例子?

在我的项目中,我想使用 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

最简单的方法是在发送之前将图像转换为字节数组,然后将其转换回目标站点上的图像。

这里有两种方法可以做到这一点:

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 回答