我有两个项目。一个是Windows窗体项目,另一个是.Net Core 2.0 Web API项目。我可以从Windows窗体应用程序调用我的Web API,我可以调用基本的CRUD操作。
我需要张贴一张照片。我怎么做?我的POST看起来像这样:
private async void AddStudent()
{
var p = new Student
{
FirstName = "Johdn",
LastName = "Doe",
Avatar = "Image"; // my photo
};
using (var client = new HttpClient())
{
var serializedStudent = JsonConvert.SerializeObject(p);
var content = new StringContent(serializedStudent, Encoding.UTF8, "application/json");
var result = await client.PostAsync(URI, content);
}
}
Web API实现如下所示:
public void Post([FromBody] Student student)
{
var insideStudent = _dbContext.Students.FirstOrDefault(cus => cus.Id == student.Id);
if (insideStudent != null)
{
insideStudent.FirstName = student.FirstName;
insideStudent.LastName = student.LastName;
_dbContext.SaveChanges();
} else {
_dbContext.Students.Add(new Student
{
FirstName = student.FirstName,
LastName = student.LastName,
Avatar = student.Avatar // my photo
});
_dbContext.SaveChanges();
}
}
但是如何将图像发送到我的Web API?
答案 0 :(得分:1)
val b=sc.broadcast(myLargeDataObj)
val c=x.map {(r:org.apache.spark.sql.Row) => b.value.getDataFromMyLargeDataObj(r.getLong(0))} .collect
可以是一个选项。鉴于MultipartFormDataContent
是一个字节数组:
Student.Avatar
并且您拥有图像的public byte[] Avatar { get; set; }
,您可以将其作为字节数组内容与字符串内容一起发送:
stream
那么你可以在服务器端接收那些:
private async void AddStudent()
{
var stream = //gets image stream...
var p = new Student
{
FirstName = "Johdn",
LastName = "Doe",
};
using (var client = new HttpClient())
{
var serializedStudent = JsonConvert.SerializeObject(p);
var stringContent = new StringContent(serializedStudent, Encoding.UTF8, "application/json");
var multipartContent = new MultipartFormDataContent();
using (var mem = new MemoryStream())
{
await stream.CopyToAsync(mem);
var byteContent = new ByteArrayContent(mem.ToArray());
multipartContent.Add(byteContent, "files", "my file");
multipartContent.Add(new StringContent(p.FirstName), "FirstName");
multipartContent.Add(new StringContent(p.LastName), "LastName");
var response = await client.PostAsync(URI, multipartContent);
}
}
}