0


搭建.NET Core Web API 文件上传项目

前言

本文介绍从零搭建.NET Core Web API 文件上传项目,文中代码以上传文件为例。
源码下载地址:下载地址


步骤

1 创建新的.NET Core Web API 项目,如下图。
在这里插入图片描述

2 给项目命名
在这里插入图片描述
3 框架使用的是.NET 8.0(长期支持)
在这里插入图片描述
4 项目创建好后得到如下目录结构
在这里插入图片描述
5 运行项目出现SwaggerAPI文档页面
在这里插入图片描述
6 创建一个新的类库项目,放我们的一些帮助类。
在这里插入图片描述
7 创建类库

在这里插入图片描述
8 给新建的类库命名
在这里插入图片描述
9 选择和之前框架一样的框架版本
在这里插入图片描述
10 编写保存缩略图的帮助类代码,代码如下

usingSystem;usingSystem.Collections.Generic;usingImageMagick;namespaceTS.Common.Helpers{publicclassImageHelper{/// <summary>/// 保存缩略图/// </summary>/// <param name="originalFilePath">原图地址</param>/// <param name="destinationFilePath">模板地址</param>/// <param name="targetWidth">目标大小</param>publicstaticboolResizeAndSaveImage(string originalFilePath,string destinationFilePath,int targetWidth){bool flag =false;using(MagickImage image =newMagickImage(originalFilePath)){if(image.Width > targetWidth){int targetHeight =(int)(((double)targetWidth / image.Width)* image.Height);

                    image.Resize(targetWidth, targetHeight);
                    image.Write(destinationFilePath);
                    flag =true;}else{
                    image.Resize(image.Width, image.Height);
                    image.Write(destinationFilePath);
                    flag =true;}}return flag;}}}

11 当然这个代码需要用到Magick,我们使用NuGet安装
在这里插入图片描述
12 安装如下图版本包
在这里插入图片描述
13 在API项目中添加控制器文件, 命名为FileController.cs
在这里插入图片描述
14 编写上传文件的代码

usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Mvc;namespaceFileUploadAPI.Controllers{[Route("api/[controller]")][ApiController]publicclassFileController:ControllerBase{privatereadonlystring fileAddr ="C:/Web/WebSevice/template/";/// <summary>/// 上传文件/// </summary>/// <param name="file"></param>/// <returns></returns>[HttpPost("UploadifyFile")]publicasyncTask<IActionResult>UploadifyFile([FromForm]IFormFile file){// 获取文件后缀名string fileExtension = Path.GetExtension(file.FileName).ToLower();string[] allowedExtensions ={".jpg",".jpeg",".png",".gif",".bmp",".webp"};string fileName = Path.GetFileNameWithoutExtension(file.FileName);string originalFileName = Path.Combine(fileAddr, fileName + fileExtension);// 判断是否是图片文件if(!allowedExtensions.Contains(fileExtension)){if(!System.IO.File.Exists(originalFileName)){awaitSaveFileAsync(file, originalFileName);}}else{// 图片文件 保存缩略图
                originalFileName = Path.Combine(fileAddr, fileName +"_o"+ fileExtension);string smallFileName = Path.Combine(fileAddr, fileName +"_s"+ fileExtension);string mediumFileName = Path.Combine(fileAddr, fileName +"_m"+ fileExtension);if(!System.IO.File.Exists(originalFileName)){awaitSaveFileAsync(file, originalFileName);
                    TS.Common.Helpers.ImageHelper.ResizeAndSaveImage(originalFileName, smallFileName,200);// 调整宽度为200
                    TS.Common.Helpers.ImageHelper.ResizeAndSaveImage(originalFileName, mediumFileName,500);// 调整宽度为500}}returnOk(fileName);}/// <summary>/// 保存原始文件/// </summary>/// <param name="file"></param>/// <param name="filePath"></param>/// <returns></returns>privateasyncTaskSaveFileAsync(IFormFile file,string filePath){string? directory = Path.GetDirectoryName(filePath);if(!Directory.Exists(directory)){
                Directory.CreateDirectory(directory);}using(var stream =newFileStream(filePath, FileMode.Create)){await file.CopyToAsync(stream);}}}}

15 使用调试工具 上传个文件试试
在这里插入图片描述
16 上传图片能保存缩略图,上传非图片直接保存
在这里插入图片描述


总结

这里只介绍了一个简单文件上传项目代码,一个完整的webapi项目还需要配置其他功能,例如Jwt验证,如何与数据库交互。


标签: .netcore c#

本文转载自: https://blog.csdn.net/roc_wei_chen/article/details/140567259
版权归原作者 rocweichen 所有, 如有侵权,请联系我们删除。

“搭建.NET Core Web API 文件上传项目”的评论:

还没有评论