由于尝试使用 MultipartFormDataContent 将图像上传到服务器而导致损坏的 png

Damaged png as result of attempt toupload image to server using MultipartFormDataContent

我正在尝试从我的 Xamarin iOS 应用上传 png。服务器 returns 代码 200 和该图像的 link。当我尝试 copy-paste 这个 link 到浏览器时,它显示损坏的图像模板。 当我使用邮递员尝试此步骤时,一切都很好。服务器给我工作 link。我可以在 copy-paste 后在浏览器中看到我的图像。

我已经多次比较邮递员的headers。没有任何帮助。我还检查了我的应用程序中的字节数组是否有效。是的,它是有效的。我用它制作了图像并显示在手机上。

我的要求:

                client.DefaultRequestHeaders.Add("Accept", "*/*");
                client.DefaultRequestHeaders.Add("ContentType", "multipart/form-data");
                client.DefaultRequestHeaders.Add("Connection", "keep-alive");
                var imageContent = new ByteArrayContent(imgBytes, 0, imgBytes.Length);
                imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/png");

                using (var formData = new MultipartFormDataContent())
                {
                    formData.Add(imageContent, "pic", "picture.png");
                    var result = await client.PostAsync($"{Constants.MainUrl}{"/api/Profile/EditProfilePic"}", formData);
                    var resContent =await result.Content.ReadAsStringAsync();
                    return result;
                }

我的字节转换:

 using (NSData imageData = _currentImg.AsPNG())
                    {
                        Byte[] imgByteArray = new Byte[imageData.Length];

在将图像转换为字节数组时需要此代码。正好 System.Runtime.InteropServices... 完整代码如下:

Byte[] imgByteArray = new Byte[imageData.Length]; System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, imgByteArray, 0, Convert.ToInt32(imageData.Length));