ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Net.Core Webapi 文件上传接口

2021-05-03 18:57:56  阅读:1043  来源: 互联网

标签:Webapi Core app System environment using Net public files


感谢https://www.youtube.com/watch?v=ungZ-BaVvZk&ab_channel=ThumbIKR-ProgrammingExamples的教程。

Net.Core Webapi 文件上传接口

Net版本 5.0

Controller设置

Controller文件夹,ImageUploadController.cs文件,这里为了简化操作,将Model文件里面的 FileUploadAPI也移到里面了。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.IO;

namespace FileUploadStudy.Controllers
{
    [Route("api/[Controller]")]
    [ApiController]
    public class ImageUploadController : ControllerBase
    {
        //初始化 
        public static IWebHostEnvironment _environment;
        public ImageUploadController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        public class FileUploadAPI
        {
            public IFormFile files { get; set; }

        }
        [HttpPost]
        public async Task<string> Post([FromForm]FileUploadAPI objFile)
        {
            try
            {
                if (objFile.files.Length > 0)
                {
                    string path = _environment.WebRootPath + "\\Upload\\";
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    using (FileStream filesStream= System.IO.File.Create(path + objFile.files.FileName))
                    {
                        objFile.files.CopyTo(filesStream);
                        filesStream.Flush();
                        return "\\Upload\\" + objFile.files.FileName;
                    }
                }
                else
                {
                    return "false";
                }
            }
            catch (Exception ex)
            {

                return ex.Message;
            }


        }
    }
}

start.cs设置

start.cs文件的configure里面,主要改了三个部分

app.Run(async (context) =>
            {
                await context.Response.WriteAsync("文件不存在");
            });

app.UseStaticFiles();
if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "FileUploadStudy v1"));
            }
            /// ---
            else
            {
                app.UseHsts();
            }

wwwroot

还有就是需要新建 wwwroot文件夹

测试

注意关掉postman里面的ssl设置

文件上传接口做起来简单,但要注意几个细节,不然后面会浪费很多时间

  • Post接口需要加上[FromForm]特性。不然postman测试会出现411,并且默认的Swagger接口测试也没有文件上传选项
  • 注意key的值要与model的FileUploadAPI的files要对应上,不然也会报错

标签:Webapi,Core,app,System,environment,using,Net,public,files
来源: https://blog.csdn.net/wingsky666/article/details/116379407

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有