如何检索与Webapi有关的上传图片数据

时间:2019-12-15 17:57:44

标签: c# angular visual-studio asp.net-core visual-studio-code

目标:
上传图片,然后将其保存到路径“ C:\ test \”

问题:
主要问题在于应如何构建.net核心代码,该代码应检索传入的数据(即图片后的数据),然后将其保存在本地计算机中。

我不知道从哪里开始。

信息:
* Angular和c.net核心是分开的,它们不在同一解决方案中。
VS代码用于Angular,而VS 2017用于.net核心。
*前端代码为https://stackblitz.com/edit/angular-o1asqg
源代码是“ https://w3path.com/new-angular-8-file-upload-or-image-upload/

谢谢!

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    // GET api/values
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    [HttpGet("{id}")]
    public ActionResult<string> Get(int id)
    {
        return "value";
    }

    // POST api/values
    [HttpPost]
    public void Post([FromBody] string value)
    {
    }
}

1 个答案:

答案 0 :(得分:1)

  

主要问题是如何构建.net核心代码,使该代码应检索传入的数据(即图片后的数据),然后将其保存在本地计算机中。

您可以在Web api POST操作参数上收到IFormFile files,名称files对应于您的角度formData的键名。如果您需要将其他属性附加到角度formData,则可能会收到一个视图模型,其中包含asp.net核心操作上的所有这些属性。

下面是一个简单的工作演示。

角度:

onSubmit() {
    const formData = new FormData();
    formData.append('files', this.fileData);

    this.http.post('https://localhost:5001/api/values/addfile', formData)
      .subscribe(events => {        
        alert('SUCCESS !!');
  }) 
}

Asp.Net Core Web API:

[HttpPost("addFile")]
public async Task AddFile(IFormFile files)
    {

        var fileName = Path.GetFileName(files.FileName);
        var filePath = Path.Combine("C:\\test", fileName);

        using (var fileSteam = new FileStream(filePath, FileMode.Create))
        {
            await files.CopyToAsync(fileSteam);
        }         

    }