Xamarin:将图片上传到服务器

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); 
+0

尝试在'MemoryStream'块的第一行设置'streamReader.Position = 0'。它可能是 – user1

+0

@ user1,streamReader没有Position属性,也许是memoryStream?但它不工作; – KreminT

+0

你的上传代码在哪里?你用什么方法?你也有你的服务器方法的样本?它从小提琴手工作? –

在你仍然需要的情况下,这个工作对我来说:

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 
    } 

}