.Net Core创建Api进行文件上传

1、Net Core创建api接口,用于接收外部请求,进行文件的上传

2、添加控制器类,添加如下代码:

        [HttpPost]
        [Route("PostFile")]
        public String PostFile([FromForm] IFormCollection formCollection)
        {
            String result = "Fail";
            if (formCollection.ContainsKey("user"))
            {
                var user = formCollection["user"];
            }
            FormFileCollection fileCollection = (FormFileCollection)formCollection.Files;
            foreach (IFormFile file in fileCollection)
            {
                StreamReader reader = new StreamReader(file.OpenReadStream());
                String content = reader.ReadToEnd();
                String name = file.FileName;
                String filename = @"D:/Test/" + name;
                if (System.IO.File.Exists(filename))
                {
                    System.IO.File.Delete(filename);
                }
                using (FileStream fs = System.IO.File.Create(filename))
                {
                    // 复制文件
                    file.CopyTo(fs);
                    // 清空缓冲区数据
                    fs.Flush();
                }
                result = "Success";
            }
            return result;
        }

3、修改其中需要注意的点,如文件夹是否存在未做判断,需要提前创建文件夹或添加文件夹判断

4、通过postman进行接口测试,form-data数据请求方式,key选择File,value选择文件,进行提交(如图)。

5、注意问题:提交请求之后,如遇到报错返回代码413,通常是文件请求大小被限制。目前可提供以下几种解决方案,但在不同条件下生效的方式不一样,需要一一测试

方法一:在接口方法上添加特性[DisableRequestSizeLimit]

同时在startup.cs中的添加 

            services.Configure<FormOptions>(x =>
            {
		         x.MultipartBodyLengthLimit = 209_715_200;//最大200M
            });

方法二:在startup.cs中的添加

        ervices.Configure<FormOptions>(x =>
        {
            x.ValueLengthLimit = int.MaxValue;
            x.MultipartBodyLengthLimit = int.MaxValue;
            x.MemoryBufferThreshold = int.MaxValue;
        });

 如果后续有其它问题或解决方案,将在评论区进行补充。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在.NET Core中使用API进行文件可以通过以下步骤完成: 1. 首先,创建一个API控制器或一个接受文件的动作方法。通过在方法参数中使用[FormFile]属性来声明接收文件的参数。例如: ```c# [HttpPost("upload")] public async Task<IActionResult> UploadFile(IFormFile file) { // 代码逻辑... } ``` 2. 在控制器或方法中,可以使用`FileStream`或`MemoryStream`等流操作来处理上文件。例如,将文件保存到服务器上的特定位置: ```c# [HttpPost("upload")] public async Task<IActionResult> UploadFile(IFormFile file) { if (file != null && file.Length > 0) { using (var stream = new FileStream("<目标文件路径>", FileMode.Create)) { await file.CopyToAsync(stream); } } return Ok(); } ``` 3. 如果您需要对文件进行验证,可以使用文件的属性,如文件名、大小、类型等。例如: ```c# [HttpPost("upload")] public async Task<IActionResult> UploadFile(IFormFile file) { if (file != null && file.Length > 0) { // 验证文件属性 if (file.Length > 10 * 1024 * 1024) { return BadRequest("文件大小不能超过10MB。"); } // 验证文件类型 if (!IsFileSupported(file)) { return BadRequest("不支持的文件类型。"); } // 文件保存逻辑... } return Ok(); } private bool IsFileSupported(IFormFile file) { // 检查文件类型的逻辑,可以根据需要自定义 // 例如:return file.ContentType.StartsWith("image/"); } ``` 4. 最后,通过发送POST请求,将文件作为表单数据通过multipart/form-data编码进行。您可以选择使用工具,例如Postman,或通过前端页面实现此操作。 以上是使用.NET Core API进行文件的基本步骤,您可以根据需要进行进一步的自定义和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值