将JSON文件上传到WebAPI

亚历克斯·穆里尼奥

我正在尝试使用Powershell Core将JSON文件上传到.Net Core 3 WebApp,但无法正常工作。“文件”始终为null。

在WebApp的代码下方:

[HttpPost]
public async Task<ActionResult> UploadFile(IFormFile file)
{
    if (!ModelState.IsValid) 
        return BadRequest();

        var path = Path.GetTempFileName();
        var stream = new FileStream(path, FileMode.Create);
        await file.CopyToAsync(stream);
        string FileName = file.FileName;

        // .. parsing the file

        return Ok();
}

以及来自Powershell的实际要求:

$file = '/fileToUpload.json'
Invoke-RestMethod -Uri 'https://localhost:5001/uploadfile' -Method Post -InFile $file -ContentType 'application/json'

但是此请求始终返回以下错误:

Invoke-RestMethod : System.NullReferenceException: Object reference not set to an instance of an object.

当在方法中设置断点时,我可以看到“文件”始终为空。

最初,我从一个接受正文中JSON数据的方法开始,但是在使用Invoke-RestMethod时,Post请求的正文中似乎存在某种限制,因此我不得不想出另一种解决方案来解决此“限制'。我在使用Postman时没有遇到限制问题,所以我想它与Powershell有关。如果有人知道如何解决此“正文限制”问题,那将更大,因为我更喜欢在正文中发布JSON数据而不是发布文件。

希望有人能帮助我。提前致谢。

亚历克斯·穆里尼奥

好的,我设法解决了最初的问题:使用Invoke-RestMethod cmd-let时,POST请求中主体的有效负载限制。我使用curl进行了切换,现在一切都按预期运行,因此我不必发布文件而不是JSON数据(现在顺便说一句也可以正常工作)。

这是我用于可能遇到相同问题的所有命令的curl命令:

curl --url 'https://localhost:5001/postJSON' --insecure -H 'Content-Type: application/json' --request POST --data @fileToUpload.json

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章