阅读本文你的收获:
- 了解WebApi项目保存上传图片的三种方式
- 学习在WebApi项目中如何上传图片到指定文件夹中
在ASP.NET Core基础之图片文件(一)-WebApi访问静态图片文章中,学习了如何获取WebApi中的静态图片,本文继续分享如何上传图片。
那么,上传的图片应该存放到什么位置?
在ASP.NET Core Web API中,通常将上传的图片存储在以下目录之一:
- 【方案1】系统中的特定文件夹:比如创建一个Uploads文件夹,并将其配置为应用程序的静态文件目录。这样就可以将上传的图片保存在该文件夹中。
- 【方案2】数据库:可以将上传的图片存储在数据库中。
- 【方案3】云存储服务:如果想将图片存储在远程服务器上,可以使用云存储服务(如阿里云OSS、七牛云、Microsoft Azure Blob Storage等)来存储上传的图片。也可以搭建自己的私有云存储服务器。
以上三种方案需要根据具体的需要进行选择,以下案例演示的是【方案1】,即上传到应用系统服务器的特定文件夹下面。
开发环境:
操作系统: Windows 10 专业版
平台版本是:.NET 6
开发框架:ASP.NET Core WebApi
开发工具:Visual Studio 2022
一. 创建并配置上传图片的文件夹
- 在WebApi项目上右击,新建文件夹“Uploads”

- 在Program.cs中配置静态文件中间件
采用自定义配置StaticFileOptions,把文件存放到Uploads文件夹中。
//引用命名空间
using Microsoft.Extensions.FileProviders;
app.UseStaticFiles(new StaticFileOptions
{
//例如保存到网站根目录 {content root}/Files下面,可以用Path.Combine方法拼接路径
FileProvider = new PhysicalFileProvider(Path.Combine(app.Environment.ContentRootPath, "Uploads")),
RequestPath = "/uploads" //配置请求路径
});
二.编写上传图片的WebApi接口
- 在控制器类的上面,引用以下命名空间
using System.IO; //文件操作
using Microsoft.AspNetCore.Hosting; //ASPNET Core的托管环境
- 控制器类里面写一个上传文件的api接口
/// <summary>
/// 产品模块(演示文件上传)
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class ProductController : ControllerBase
{
/// <summary>
/// 图片上传
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost]
public IActionResult UploadFile(IFormFile file, //文件对象
[FromServices] IWebHostEnvironment env) //局部注入主机环境对象
{
//检查文件大小
if (file.Length == 0)
{

最低0.47元/天 解锁文章
9756

被折叠的 条评论
为什么被折叠?



