Asp.net core上传文件并将文件URL存储到数据库
创始人
2024-09-15 23:00:27
0

以下是一个示例解决方案,展示了如何使用ASP.NET Core上传文件,并将文件URL存储到数据库中。

首先,在ASP.NET Core项目中添加Microsoft.AspNetCore.HttpMicrosoft.AspNetCore.StaticFiles NuGet包。

然后,创建一个控制器来处理文件上传和数据库操作:

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

namespace YourNamespace.Controllers
{
    [ApiController]
    [Route("api/files")]
    public class FilesController : ControllerBase
    {
        private readonly IWebHostEnvironment _environment;
        private readonly YourDbContext _dbContext;

        public FilesController(IWebHostEnvironment environment, YourDbContext dbContext)
        {
            _environment = environment;
            _dbContext = dbContext;
        }

        [HttpPost("upload")]
        public async Task Upload(IFormFile file)
        {
            if (file == null || file.Length == 0)
            {
                return BadRequest("No file uploaded.");
            }

            // 设置文件路径
            string uploadsFolder = Path.Combine(_environment.WebRootPath, "uploads");
            string uniqueFileName = Guid.NewGuid().ToString() + "_" + file.FileName;
            string filePath = Path.Combine(uploadsFolder, uniqueFileName);

            // 保存文件到磁盘
            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                await file.CopyToAsync(stream);
            }

            // 存储文件URL到数据库
            var fileUrl = $"https://yourdomain.com/uploads/{uniqueFileName}"; // 替换为你的域名
            _dbContext.Files.Add(new FileEntity { Url = fileUrl });
            await _dbContext.SaveChangesAsync();

            return Ok("File uploaded successfully.");
        }
    }
}

在上述代码中,我们使用了IWebHostEnvironment来获取Web根目录路径,然后将上传的文件保存到该目录下的uploads文件夹中。然后,我们将文件的URL存储到数据库中。

请注意,上述代码中的YourDbContext是你的数据库上下文类,你需要将其替换为你自己的实现。

最后,你可以使用Postman或其他工具来测试文件上传功能。确保将请求的Content-Type设置为multipart/form-data,并使用file作为文件的键名。

希望这个示例能帮助到你!

相关内容

热门资讯

第三德州版(wpk微扑克智能)... 第三德州版(wpk微扑克智能)外挂透明挂辅助挂(透视)系统教程(有挂方式)-哔哩哔哩关于wpk微扑克...
九个游戏!德扑人工智能(有没有... 九个游戏!德扑人工智能(有没有规律)辅助透视(有挂教程)-哔哩哔哩这是由厦门游乐互动科技有限公司精心...
第7自建房!衢州都莱罗松辅助器... 第7自建房!衢州都莱罗松辅助器(辅助挂)太坑了原来真的有挂(有挂分析)-哔哩哔哩是一款可以让一直输的...
九个猫腻!wepoke软件收费... 九个猫腻!wepoke软件收费(外挂显示)辅助透视(有挂技巧)-哔哩哔哩;人气非常高,ai更新快且高...
第2个漏洞!德扑线上创建房间(... 第2个漏洞!德扑线上创建房间(软件透明有人买)软件透明挂(今日头条)-哔哩哔哩;人气非常高,ai更新...
五辅助器(Wepoke总结)外... 五辅助器(Wepoke总结)外挂透明挂辅助机制(辅助挂)爆料教程(有挂详情)-哔哩哔哩Wepoke总...
第8个私人局!wpk大厅是不是... 第8个私人局!wpk大厅是不是机器人(真的太假了)其实真的有挂(有挂规律)-哔哩哔哩是一款可以让一直...
第八检测!广东老友麻将神器(透... 第八检测!广东老友麻将神器(透视)太坑了原来真的有挂(有挂方法)-哔哩哔哩1、广东老友麻将神器ai机...
6个挂!德扑之星创建房间设置(... 6个挂!德扑之星创建房间设置(操作)辅助透视(了解有挂)-哔哩哔哩1、点击下载安装,微扑克wpk插件...
第5猫腻!情怀麻将怎么设置才能... 第5猫腻!情怀麻将怎么设置才能一直赢(辅助挂)太坑了其实真的有挂(确实有挂)-哔哩哔哩;1分钟了解详...