Xamarin:将图像上传到服务器 [英] Xamarin: Upload image to server
本文介绍了Xamarin:将图像上传到服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要使用 api 将图像上传到服务器.现在我使用 System.Net.Http;
I need upload image to server using api.
Now I'm using System.Net.Http;
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();
}
}
}
发送请求后出现错误类型文件无效
我在思考 byte[] ReadAllBytes(string path)
中的问题对于请求,我可以使用 Stream 或 byte[]请帮忙更新
After sending request i have error Type file is invalid
I'm thinking problem in byte[] ReadAllBytes(string path)
For request i can use Stream or byte[]
Please, help
UPDATE
lRequestResponse = await lHttpClient.PostAsync("URL", lContent);
推荐答案
This help me
This help me
MultipartFormDataContent lContent=new MultipartFormDataContent();
byte[] lBytes = DependencyService.Get<IFileHelper>().ReadAllBytes(filename);
ByteArrayContent lFileContent= new ByteArrayContent(lBytes);
lFileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
FileName = filename,
Name = "imgFile"
};
lFileContent.Headers.ContentType = new MediaTypeHeaderValue("image/png");
lContent.Add(lFileContent);
HttpResponseMessage lRequestResponse=await lHttpClient.PostAsync(await url, lContent);
IFileHelper 在 IOS 上的实现
IFileHelper implement on IOS
namespace Client.iOS
{
public class FileHelper : IFileHelper
{
private string GetLocalFilePath(string filename)
{
string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string libFolder = Path.Combine(docFolder, "..", "images", "Databases");
if (!Directory.Exists(libFolder))
{
Directory.CreateDirectory(libFolder);
}
return Path.Combine(libFolder, filename);
}
public byte[] ReadAllBytes(string filename)
{
string path=GetLocalFilePath(filename);
return (FileStream(path) as MemoryStream).ToArray();
}
private Stream FileStream(string path)
{
StreamReader lStreamReader = new StreamReader(path);
MemoryStream lMemoryStream = new MemoryStream();
lMemoryStream.Position = 0;
lStreamReader.BaseStream.CopyTo(lMemoryStream);
return lMemoryStream;
}
}
}
这篇关于Xamarin:将图像上传到服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文