【问题标题】:How to send canvas image large size from silverlight to WCF service如何将大尺寸画布图像从 Silverlight 发送到 WCF 服务
【发布时间】:2013-03-15 10:36:11
【问题描述】:

我有一个大尺寸字节[],使用以下代码从 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());

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

【问题讨论】:

    标签: wcf silverlight wcf-ria-services silverlight-5.0


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢@Boluc。我们不能使用流式传输,因为这将完成合并块的工作并且我们不需要担心校验和等。
    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 2015-02-25
    • 2016-03-27
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多