首页 > 解决方案 > 文件上传到 C# .Net Core API

问题描述

我正在尝试将文件发送到我编写的现有 API,但是当 API 接收到文件时,它为空。API 在“request.GetRequestStream()”处获取文件。该 API 与 Postman 一起使用,所以我很确定问题出在我的代码上。这里是

public static void SendFile(Stream DATA)
{
    
    try
    {
        
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        request.Method = "POST";
        request.ContentType = "multipart/form-data";
        int bytesRead = 0;
        byte[] requestByte = new byte[DATA.Length];
        request.ContentLength = requestByte.Length;

        using (Stream requestStream = request.GetRequestStream())
        {
            while ((bytesRead = DATA.Read(requestByte, 0, requestByte.Length)) != 0)
            {
                requestStream.Write(requestByte, 0, bytesRead);
                requestStream.Close();
            }
        }
        WebResponse webResponse = request.GetResponse();
        Stream webStream = webResponse.GetResponseStream();
        StreamReader responseReader = new StreamReader(webStream);
        string response = responseReader.ReadToEnd();
        Console.Out.WriteLine(response);
        responseReader.Close();
    }
    catch (Exception e)
    {
        Console.Out.WriteLine("-----------------");
        Console.Out.WriteLine(e.Message);
    }

}

API如下

[HttpPost("upload")]
        public IActionResult UploadFile([FromForm(Name = "files")] List<IFormFile> files)
        {
            string subDirectory = "reports";
            try
            {
                if (files != null)
                {
                    _fileService.SaveFile(files, subDirectory);
                    _fileService.ProcessFiles(files);
                    return Ok(new { files.Count, Size = FileService.SizeConverter(files.Sum(f => f.Length)) });
                }
                else
                    return Ok("Upload failed");
            }
            catch (Exception exception)
            {
                return BadRequest($"Error: {exception.Message}");
            }
        }

其中 URL 是 API 的位置(它们现在都在同一台 PC 上运行)。

我究竟做错了什么?

标签: c#apiasp.net-corefile-transfer

解决方案


推荐阅读