.net核心API文件上传在Azure上不起作用

时间:2019-08-14 07:12:39

标签: c# azure asp.net-core .net-core

我们的控制器中包含以下代码:

@Service
public class EndUserService extends UserService {
    @Autowired
    public EndUserService(final VerificationTokenRepository verificationTokenRepository, final EndUserDisambiguator userDisambiguator) {
        super(verificationTokenRepository, userDisambiguator);
    }

    ...
}

此代码在本地的工作方式与我们期望的一样。将其放在Azure上时,会收到以下响应。

[HttpPost("v1/item/{id}/images")]
public async Task<ActionResult> UploadImage([FromRoute]string Id, [FromForm]IFormFile file)
{
    //Upload image logic
}

看来我们不允许以这种方式在Azure上载文件。但是找不到任何方法可以完成这项工作。

该项目是.NET Core 2.2 MVC项目,它在标准的Azure Web App上运行。

2 个答案:

答案 0 :(得分:1)

当要使用附加了文件的Forms(例如multipart请求)时,我们可以使用以下方法访问请求的文件:

Request.Form.Files,代表传入表单的文件集合。

所需的文件将使用OpenReadStream方法作为流读取,然后反序列化。

答案 1 :(得分:0)

解决方法是按照Bercovici Adrian的建议将其更改为Request.Form.Files。现在的代码是:

[HttpPost("v1/item/{id}/images")]
public async Task<ActionResult> UploadImage([FromRoute]string Id)
{
    IFormFile file = Request.Form.Files[0]
    //Upload image logic
}