在Xamarin.Forms中,我正在发送我的图像到rest Api,而在Add中,图像没有按照需要进行转换,获取和错误无法将system.net.http.streamcontent转换为byte[]
HttpClient client = new HttpClient();
MultipartFormDataContent form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(new StreamContent(new MemoryStream(image1)), "bilddatei", "upload.jpg"));
在提到的代码中,image1是使用Xamarin.Forms从相机拍摄的图像,请帮助我解决这个问题,或者让我知道将图像发送到Rest web服务的替代方案。
发布于 2016-07-30 04:52:54
看起来您需要传递一个byte[]
而不是一个StreamContent
。试试这个:
var client = new HttpClient();
var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(new MemoryStream(image1).ToArray()), "bilddatei", "upload.jpg");
更新:如果你将图片保存在设备的存储器上,你可以像这样发送它:
var client = new HttpClient();
var form = new MultipartFormDataContent();
var path = "path/to/file";
form.Add(new ByteArrayContent(File.ReadAllBytes(path)), "bilddatei", "upload.jpg");
发布于 2020-06-09 04:18:03
我理解这种怀疑,但我相信有更好的方法来做到这一点。使用Firebase存储并写入您的数据库,只有图像URL保存在Firebase中。
如下所示:
using (var ms = new MemoryStream(file.ByteFile))
{
ms.Seek(0, SeekOrigin.Begin);
var task = new FirebaseStorage(
"your.adress.firebase.com",
new FirebaseStorageOptions()
{
HttpClientTimeout = new TimeSpan(0, 30, 0)
})
.Child("Files")
.Child($"{file.id}.mp4")
.PutAsync(ms);
file.LinkVideo = await task;
Entity entity = new Entity()
{
Name = file.Name,
LinkVideo = file.LinkVideo,
};
//Your API
return await PostEntity(contest);
}
https://stackoverflow.com/questions/38666123
复制相似问题