Xamarin:将图片上传到服务器
问题描述:
我需要使用api将图片上传到服务器。 现在我使用System.Net.Http;
Xamarin:将图片上传到服务器
byte[] lFileBytes= DependencyService.Get<IFileHelper>().ReadAllBytes(ImagePath);
ByteArrayContent lFileContent = new ByteArrayContent(lFileBytes,0,lFileBytes.Length);
lFileContent.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("form-data");
lFileContent.Headers.ContentType=new MediaTypeHeaderValue("image/jpg");
lFileContent.Headers.ContentDisposition.Parameters.Add(new NameValueHeaderValue("name","file"));
lFileContent.Headers.ContentDisposition.Parameters.Add(new NameValueHeaderValue("filename", "9.jpg"));
lFileContent.Headers.ContentLength= lFileBytes.Length;
lContent.Add(lFileContent);
public byte[] ReadAllBytes(string path) {
using (var streamReader = new StreamReader(path))
{
using (var memoryStream = new MemoryStream())
{
streamReader.BaseStream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
}
发送请求后,我有错误Type file is invalid
我想问题byte[] ReadAllBytes(string path)
对于请求我可以使用流或字节[] 请帮助 UPDATE
lRequestResponse = await lHttpClient.PostAsync("URL", lContent);
答
在你仍然需要的情况下,这个工作对我来说:
var cont = new MultipartFormDataContent();
var image = new StreamContent(img.Image.GetStream());
cont.Add(image, "\"file\"", img.FileName);
var uri = App.apiurl + $"FileUpload/" + img.FileName + "/";
using (var client = new HttpClient())
{
var response = await client.PostAsync(uri, cont);
if (response.StatusCode != System.Net.HttpStatusCode.OK)
{
// return error code
}
}
尝试在'MemoryStream'块的第一行设置'streamReader.Position = 0'。它可能是 – user1
@ user1,streamReader没有Position属性,也许是memoryStream?但它不工作; – KreminT
你的上传代码在哪里?你用什么方法?你也有你的服务器方法的样本?它从小提琴手工作? –