我正在尝试使用 post 请求将图像从我的 xamarin 表单应用程序发送到 asp .net core 服务器。我需要将图像保存在某个服务器文件夹中,但我做不到。
这是我在 _mediaFile 中选择图像后发送图像的方法
private async void UploadFile_Clicked(object sender, EventArgs e)
{
var uri = new Uri(string.Format(Constants.UsersRestUrl + "/Files/Upload/", string.Empty));
var content = new MultipartFormDataContent();
content.Add(new StreamContent(_mediaFile.GetStream()),
"\"file\"",
$"\"{_mediaFile.Path}\"");
var httpClient = new HttpClient();
var httpResponseMessage = await httpClient.PostAsync(uri, content);
}
我目前在我的 api 控制器中有这个
[Route("Files/Upload/")]
[HttpPost]
public async Task<IActionResult> Post(IFormFile file)
{
Debug.Write("******");
// full path to file in temp location
var filePath = Path.GetTempFileName();
Debug.Write("****** File Path " + filePath);
if (file.Length > 0)
{
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
}
return Ok(new { file });
}
我尝试应用这个https://learn.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads https://learn.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads但它的目的是直接从 asp net core 应用程序保存图像。
有人能帮我吗?谢谢
最后我得到了!我需要的是发送图像并将其保存到 wwwroot 文件夹内的服务器。我将服务器控制器的方法留在这里,以备将来有人需要时使用。
[Route("Files/Upload/")]
[HttpPost]
public async Task<IActionResult> Post(IFormFile file)
{
//Windows path
var uploadLocation = Path.Combine(_env.WebRootPath, "Uploads\\UsersImg");
//Linux path
//var uploadLocation = Path.Combine(_env.WebRootPath, "Uploads//UsersImg");
var fileName = file.FileName.Split('\\').LastOrDefault().Split('/').LastOrDefault();
if (file.Length > 0)
{
using (var stream = new FileStream(Path.Combine(uploadLocation, fileName), FileMode.Create))
{
await file.CopyToAsync(stream);
}
}
return Ok();
}
图像保存在 wwwroot 文件夹内的 /Uploads/UsersImg/ 文件夹中。
将图像从客户端发送到服务器的方法与我在问题中发布的方法相同。
如果有人可以对这个问题进行投票来帮助其他用户就好了。谢谢!!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)