首页 > 解决方案 > 为什么我的文件从 Angular 上传到 .NET core web api 不起作用?

问题描述

在我的 Angular 应用程序中,我使用了一个控件:https ://github.com/valor-software/ng2-file-upload

此控件向我的 .NET 核心 Web API 发布一个带有文件的帖子。这是一个简短的示例,这并不重要。

public uploader: FileUploader = new FileUploader({url: `${environment.apiBaseUrl}/file`});

最终,控件对此 .NET 核心 web api 操作进行了发布:

[Route("[controller]")]
public class FileController : Controller
{
    [HttpPost]
    public void Post(IFormFile uploadedFile)
    {
        var file = uploadedFile;
        _fileSystemProvider.SaveToFileSystemAsync(_uploadSettings.GetReplacedDirectoryPath(), file.FileName, file.OpenReadStream());
    }
}

在此处输入图像描述 文件上传正在发布到 .NET web api,使用 Chrome 中的控制台确认,但uploadFile参数NULL.

为什么会这样?

标签: c#angularasp.net-core

解决方案


事实证明,您的 post 操作中的参数名称非常重要。

我发现ng2-file-upload使用file作为 fileInput 中的名称属性。

因此,当我将 post action 参数从更改uploadedFilefile一切正常时!

    [HttpPost]
    public void Post(IFormFile file)
    {
        _fileSystemProvider.SaveToFileSystemAsync(_uploadSettings.GetReplacedDirectoryPath(), file.FileName, file.OpenReadStream());
    }

我的问题是 ng2-fileupload,但你也可以在任何其他框架中使用任何其他插件!确保文件输入或上传控件的名称属性等于.NET Web apiIFormFile parameter中操作的名称!Post


推荐阅读