将图像从WP7上传到Web Api

Gunnerz

我在网上看到过其他几个例子,但我不确定为什么它不适合我。

我创建了一个简单的Windows Phone 7应用,该应用使用PhotoChooserTask。它使用Web Api将图像发送到服务器。

这是Windows Phone项目中的代码:

   void selectphoto_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            var image = new Image();
            image.Source = new BitmapImage(new Uri(e.OriginalFileName));

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:59551/api/controllername");
            request.Method = "POST";
            request.ContentType = "multipart/form-data";
//private method to convert bitmap image to byte
            byte[] str = BitmapToByte(image);
            // Getting the request stream.
            request.BeginGetRequestStream
            (result =>
            {
                // Sending the request.
                using (var requestStream = request.EndGetRequestStream(result))
                {
                    using (StreamWriter writer = new StreamWriter(requestStream))
                    {
                        writer.Write(str);
                        writer.Flush();
                    }
                }

                // Getting the response.
                request.BeginGetResponse(responseResult =>
                {
                    var webResponse = request.EndGetResponse(responseResult);
                    using (var responseStream = webResponse.GetResponseStream())
                    {
                        using (var streamReader = new StreamReader(responseStream))
                        {
                            string srresult = streamReader.ReadToEnd();
                        }
                    }
                }, null);
            }, null);

        }

在Web API上,我获得了POST方法的以下代码:

public Task<HttpResponseMessage> Post()
    {
        // Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        var provider = new MultipartFormDataStreamProvider(root);           

        // Read the form data and return an async task.
        var task = Request.Content.ReadAsMultipartAsync(provider).
             ContinueWith<HttpResponseMessage>(t =>
             {
                 if (t.IsFaulted || t.IsCanceled)
                 {
                     Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
                 }

                 // This illustrates how to get the file names.
                 foreach (MultipartFileData file in provider.FileData)
                 {
                     Image img = Image.FromFile(file.LocalFileName);
                     Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                     Trace.WriteLine("Server file path: " + file.LocalFileName);
                 }
                 return Request.CreateResponse(HttpStatusCode.OK);
             });

        return task;            
    }
}

但是我不确定为什么IsMimeMultipartContent总是返回false。即使绕过此检查,App_Data文件夹中也不会保存任何文件。

谁能帮忙。谢谢。

已编辑

基于Darrel的响应,我修改了ApiController中的POST方法。但是我仍然没有任何数据。在服务器上创建一个空白图像。这是我的代码:

 public HttpResponseMessage Post()
 {
 var task = Request.Content.ReadAsStreamAsync();
        task.Wait();
        Stream requestStream = task.Result;


        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        root = System.IO.Path.Combine(root, "xyz.jpg");
        try
        {
            FileStream fs = System.IO.File.OpenWrite(root);
            requestStream.CopyTo(fs);
            fs.Close();
        }
        catch (Exception)
        {
            throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
        }

        HttpResponseMessage response = new HttpResponseMessage();
        response.StatusCode = HttpStatusCode.Created;
        return response;
 }
达雷尔·米勒(Darrel Miller)

您没有发送的表示形式multipart/form您只是发送了个字节流application/octet-stream只需Request.Content.ReadAsStreamAsync()在服务器上使用并将流复制到文件即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Image upload from WP7 to Web Api

来自分类Dev

将图像从React上传到Laravel API

来自分类Dev

如何将参数同时上传和图像上传到One Web API?

来自分类Dev

将文档上传到Web API

来自分类Dev

通过翻新将图像顺序上传到REST API

来自分类Dev

使用REST API将图像上传到Twitter

来自分类Dev

通过翻新将图像顺序上传到REST API

来自分类Dev

如何使用 JVM API 自动将图像上传到 commercetools

来自分类Dev

使用 Java API 将图像上传到 Cloudinary

来自分类Dev

通过Web API将文件上传到Azure文件存储

来自分类Dev

通过Web API将文件上传到Azure文件存储

来自分类Dev

C# 将内存流对象上传到 Web API

来自分类Dev

无法通过 web-api 将文件上传到 slack

来自分类Dev

将图像(base64字符串)作为文件流上传到Web API

来自分类Dev

使用多图像选择器将多张图像上传到 API

来自分类Dev

Java将文件上传到api端点

来自分类Dev

将文件上传到Message Bird API

来自分类Dev

如何将文件上传到API

来自分类Dev

如何通过API将多个图像上传到Facebook中的一篇文章

来自分类Dev

将图像从android Api 23及更高版本上传到服务器

来自分类Dev

使用多部分/表单数据将图像从移动应用上传到API

来自分类Dev

通过REST API将图像上传到C#中的ServiceNow

来自分类Dev

将图像上传到OCR Microsoft Vision API时出现401错误

来自分类Dev

将图像从laravel API上传到核心php项目文件夹

来自分类Dev

使用 API 将 png 上传到 Zendesk 后“无法显示图像,因为它包含错误”

来自分类Dev

如何将文件从Angular上传到ASP.NET Core Web API

来自分类Dev

Android 将 gif 文件上传到 .net Web API 出现内部服务器错误

来自分类Dev

上传到Next.js API时图像损坏

来自分类Dev

文本编辑器,支持使用ckeditor将图像从客户端Rails应用上传到Rails API

Related 相关文章

  1. 1

    Image upload from WP7 to Web Api

  2. 2

    将图像从React上传到Laravel API

  3. 3

    如何将参数同时上传和图像上传到One Web API?

  4. 4

    将文档上传到Web API

  5. 5

    通过翻新将图像顺序上传到REST API

  6. 6

    使用REST API将图像上传到Twitter

  7. 7

    通过翻新将图像顺序上传到REST API

  8. 8

    如何使用 JVM API 自动将图像上传到 commercetools

  9. 9

    使用 Java API 将图像上传到 Cloudinary

  10. 10

    通过Web API将文件上传到Azure文件存储

  11. 11

    通过Web API将文件上传到Azure文件存储

  12. 12

    C# 将内存流对象上传到 Web API

  13. 13

    无法通过 web-api 将文件上传到 slack

  14. 14

    将图像(base64字符串)作为文件流上传到Web API

  15. 15

    使用多图像选择器将多张图像上传到 API

  16. 16

    Java将文件上传到api端点

  17. 17

    将文件上传到Message Bird API

  18. 18

    如何将文件上传到API

  19. 19

    如何通过API将多个图像上传到Facebook中的一篇文章

  20. 20

    将图像从android Api 23及更高版本上传到服务器

  21. 21

    使用多部分/表单数据将图像从移动应用上传到API

  22. 22

    通过REST API将图像上传到C#中的ServiceNow

  23. 23

    将图像上传到OCR Microsoft Vision API时出现401错误

  24. 24

    将图像从laravel API上传到核心php项目文件夹

  25. 25

    使用 API 将 png 上传到 Zendesk 后“无法显示图像,因为它包含错误”

  26. 26

    如何将文件从Angular上传到ASP.NET Core Web API

  27. 27

    Android 将 gif 文件上传到 .net Web API 出现内部服务器错误

  28. 28

    上传到Next.js API时图像损坏

  29. 29

    文本编辑器,支持使用ckeditor将图像从客户端Rails应用上传到Rails API

热门标签

归档