3、新建一个 webapi 项目,并实现上传文件的接口功能,让文件可以传输到服务器上
1、在使用模型的解决方案中新建 webapi 项目
(1)右击解决方案
(2)找到添加,点击或鼠标悬停,
(3)新建项目
2、创建一个 ASP.NET Core Web 应用程序:记得选择 .NET core ,选错了就没法使用了
选择后点击下一步。
3、更改项目名称,我这边使用的是 kouzhao , 你们也可以换成别的名字,然后点击创建。
4、平台选择 .NET Core ASP.NET 3.1 ,选择 API 项目 , 身份验证:不进行身份验证。高级设置中,去掉勾选 为HTTPS 配置,然后点击创建。
上面描述了如何创建一个 .net core webapi 的项目,接下来要了解 如何添加 接口
5、在右边找到我们的 kouzhaowebapi 这个项目,在项目中 Controllers 文件夹下添加一个 DiscernController 的类
6、将下面代码文件
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace kouzhaowebapi.Controllers
{
[ApiController]
public class DiscernController : ControllerBase
{
/// <summary>
/// 上传文件:口罩验证
/// </summary>
/// <param name="stream"></param>
/// <param name="fileName"></param>
[HttpPost("upload")]
[Route("api/discern/kouzhao")]
public object UploadFile([FromForm] IFormCollection collection)
{
//申明返回的结果
string result = "";
FormFileCollection filelist = (FormFileCollection)collection.Files;
//检查是否有文件提交上来
if (filelist != null && filelist.Any())
{
//我们只做第一个文件的检查
IFormFile file = filelist[0];
//做随机数,用到文件夹名字上,防重名
Random random = new Random();
string r = "";
int i;
for (i = 1; i < 11; i++)
{
r += random.Next(0, 9).ToString();
}
//文件路径
string Tpath = "/file/";
string name = file.FileName;
string FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + r;
string FilePath = @"C:\" + Tpath;
//获取文件类型
string type = System.IO.Path.GetExtension(name);
DirectoryInfo di = new DirectoryInfo(FilePath);
if (!di.Exists)
{
di.Create();
}
//文件保存的路径
var filefullname = FilePath + FileName + type;
using (FileStream fs = System.IO.File.Create(filefullname))
{
// 复制文件
file.CopyTo(fs);
// 清空缓冲区数据
fs.Flush();
fs.Close();
fs.Dispose();
}
//成功提示赋值到返回结果中
result = "文件上传成功";
}
return result;
}
}
}
7、接下来运行项目,我们使用控制台界面运行项目。按 F5 运行项目后,得到下面的情况,就代表程序启动了
8、使用 Postman 测试上传图片
到这里就是 新建一个 webapi 项目,并实现上传文件的接口功能,让文件可以传输到服务器上 的全部内容了,后续会继续出如何接入接口的 过程
欢迎进qq群交流:704028989