微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有此API,我在其中接收图像以将其保存在存储服务器中。我一直在测试邮递员的功能,并且工作得很好。但是当涉及到移动应用程序时,它不会发送图像。

here you can see the Postman POST request

一个xamarin应用程序的代码

        var content = new MultipartFormDataContent();
        var stream = File.OpenRead(_mediaFile.Path);
        var streamcontent = new StreamContent(stream);
        content.Add(streamcontent,"picture");
        var client = new HttpClient();
        HttpResponseMessage response = await cliente.PostAsync($"http://localhost:200/api/.../picture",content);
        string result = response.Content.ReadAsstringAsync().Result; 
        Response responseData = JsonConvert.DeserializeObject<Response>(result);
        if (response.IsSuccessstatusCode)
        {
            await Application.Current.MainPage.displayAlert("Correcto","Imagen subida Correctamentel!","OK");
            _mediaFile = null;
            terminado.IsEnabled = true;
        }
        else
        {
            terminado.IsEnabled = true;
            await Application.Current.MainPage.displayAlert("Error","Opps algo ocuirrio mal!","OK"); }

正如您在邮递员中看到的那样,密钥picture收到图像名称。我也用curl尝试过它,并且有效:

curl -X POST "http://localhost:200/api/.../picture" -H  "accept: application/json" -H  "Content-Type: multipart/form-data" -F "picture=@version1.jpeg;type=image/jpeg"

解决方法

我设法使其正常运行,但是使用RestSharp库而不是HttpClient:

var client = new RestClient("192.168.0.2"); //the ip of your REST API
var request = new RestRequest(Method.POST); 
request.AddHeader("Content-Type","multipart/form-data"); // I'm using multipart form data
request.AddHeader("Authorization","Bearer eyJ0eXAiOiJKV1QiLC"); // using JWT for auth
request.AddFile("pictureField","/path/to/file"); //the path depends on which device you're using
IRestResponse response = client.Execute(request); 

向前迈进了很多,并且工作得很好。另外,“ pictureField”取决于API所需的字段名称,并且文件的路径不应硬编码。应该根据所选图像在设备中的位置给出该图像。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。