由于尝试使用 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));
我正在尝试从我的 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));