【问题标题】:Transfer object data over HTTP, including an image通过 HTTP 传输对象数据,包括图像
【发布时间】:2013-06-17 14:02:49
【问题描述】:

我有以下场景:用户正在使用移动应用程序,并且可以创建一个存储以下数据的对象:

名称,这是一个字符串 地址,这是一个字符串 图片,使用手机的相机拍摄并在本地存储为位图图像。

用户可以选择将这些数据存储在服务器后端,这是一个监听 HTTP 请求的 WCF Web 服务。我知道我可以将对象字符串编码为 JSON 对象并通过无线方式发送到 http 服务,但我不确定如何将图像传输到服务器?您可以将其编码为 XML/JSON 并将其与字符串一起发送吗?

该应用程序目前是用 C# 编写的 windows phone 8 应用程序,但不久的将来会为 iOS 设备编写相同的应用程序。

【问题讨论】:

  • 您可以通过“mutilpart/form-data”使用 HTTP 请求,以便将图像作为文件上传。或者您可以将图像编码为 Base64 并将其作为字符串上传
  • 创建一个 POCO 对象,其中包含 2 个属性,即名称(字符串)和图片(字节数组),现在您可以使用图片和名称填充您的 POCO,然后将其发送到服务器。上面的简单 C# 代码应该很容易

标签: wcf windows-phone-8


【解决方案1】:

您必须为每个图像添加流转换并将详细信息添加到列表中。

在客户端。

Stream stream = (Stream)openDialog.File.OpenRead();
                    byte[] bytes = new byte[stream.Length];
                    stream.Read(bytes, 0, (int)stream.Length);
                    BitmapImage bmi = new BitmapImage();
                    using (MemoryStream ms = new MemoryStream(bytes))
                    {
                        bmi.SetSource(ms);
                        newRow.Thumbnail = bmi;
                }

在您的服务端

string filePath = ConfigurationManager.AppSettings.Get("ImageUploadPath");

                          if (!Directory.Exists(filePath))
                          {
                              Directory.CreateDirectory(filePath);
                          }

                          filePath = filePath + "\\" + picture.FileName + "." + picture.FileType;

                          if (picture.FileName != string.Empty)
                          {
                              fileStream = File.Open(filePath, FileMode.Create);
                              writer = new BinaryWriter(fileStream);
                              writer.Write(picture.FileStream);
                          }

【讨论】:

    猜你喜欢
    • 2020-04-16
    • 1970-01-01
    • 2018-09-11
    • 2018-03-06
    • 2018-05-04
    • 1970-01-01
    • 2020-10-11
    • 2012-11-14
    • 2020-12-01
    相关资源
    最近更新 更多