0

我有一个大尺寸字节 [] 使用以下代码从 silverlight Canvas 形成

var img = new WriteableBitmap(cnvControlHolder, null);
        var outStream = new MemoryStream();
        EncodeJpeg(img, outStream);

现在我想将它发送到 WCF 服务以从这个字节数组中形成图像并将其保存为服务器端的图像,以便我可以在 SSRS 中使用它。我的问题是由于 byte[] 很大,我得到了 WCF 服务中找不到的经典方法。

我在几个链接中读到 WCF 流是一种选择,但在网上找不到任何示例。我的服务方法是这样的:

public bool Upload(Stream image)
    {
        FileStream fileStream = null;
        BinaryWriter writer = null;
        var filePath = HttpContext.Current.Server.MapPath(".") + @"\" +
                           ConfigurationManager.AppSettings["PictureUploadDirectory"] + @"\Diagram.jpeg";// +image.ImageName;
            if (image!=null)
            {
                //return ByteArrayToFile(filePath, image.Imagestream);
                fileStream = File.Open(filePath, FileMode.Create);
                writer = new BinaryWriter(fileStream);
                writer.Write("Diagram.jpeg");
            }
            return false;
        }

and client call is this :

var img = new WriteableBitmap(canvas1, null);
var outStream = new MemoryStream();
EncodeJpeg(img, outStream); //custom library to compress into jpeg
var client = new Service1Client();
client.UploadCompleted += new EventHandler<UploadCompletedEventArgs>(client_UploadCompleted);
client.UploadAsync(outStream.ToArray());

有人可以建议一些样本或任何其他解决方案来解决我的问题。

4

1 回答 1

0

我最近在 Silverlight 中实现了一个非常相似的解决方案。解决方案包括:

  • 将大字节 [] 分成 n 个大小的块,可以通过 Web 服务调用发送
  • 对服务进行 Web 调用,注册 n 个块的文件上传请求,并从服务请求 guid。
  • 对服务进行 n 次 Web 调用并上传每个块,提供块的 guid 和序号(块可能不按顺序到达)。
  • 一旦服务器接收到所有 n 个块,它就会组合这些块并将数据写入文件。

我希望这可以帮助您入门。

于 2013-03-15T11:54:32.143 回答