当前位置:  开发笔记 > 后端 > 正文

将文件上载到ASP.Net 5 Web API时,IFormFile的集合为空

如何解决《将文件上载到ASP.Net5WebAPI时,IFormFile的集合为空》经验,为你挑选了1个好方法。

我试图将一些文件从控制台应用程序上传到ASP.NET 5 WEB API服务.

客户端(控制台应用):

    private static HttpResponseMessage UploadFiles(string[] files, Uri uploadEndpoint)
    {
        var message = new HttpRequestMessage();
        var content = new MultipartFormDataContent();

        foreach (var file in files)
        {
            var fs = new FileStream(file, FileMode.Open);
            var index = file.LastIndexOf(@"\");
            var fn = file.Substring(index + 1);
            fs.Position = 0;
            content.Add(new StreamContent(fs), "file", fn);
        }

        message.Method = HttpMethod.Post;
        message.Content = content;
        message.RequestUri = uploadEndpoint;

        var client = new HttpClient();
        return client.SendAsync(message).Result;
    }

服务器(Asp.Net 5)Web API

    [HttpPost("upload")]
    public IActionResult UploadFiles(ICollection files)
    {
        var streams = files.Select(f => f.OpenReadStream()).ToArray();
        var names = files.Select(f => ContentDispositionHeaderValue.Parse(f.ContentDisposition).FileName).ToArray();

        ProcessFiles(streams, names);

        return new HttpOkResult();
    }    

不幸的是,IFormFile的集合总是空的.谁能告诉我为什么?

谢谢

马努



1> 小智..:

您的上传控制器需要发布数据的名称标识符files,而不是file.

这一行: content.Add(new StreamContent(fs), "file", fn);

应该: content.Add(new StreamContent(fs), "files", fn);

所以你的代码基本上可行,这只是一个简单的错误.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有