首先,在 HTML 表单中添加一个 input 标记,并将其类型设置为 file:
<form method="post" enctype="multipart/form-data"> <label for="image">选择一个图片:</label> <input type="file" name="image" id="image"> <input type="submit" value="上传"> </form>
在处理程序的 POST 方法中,使用 IFormFile 接口来获取上传的文件:
[HttpPost] public async Task<IActionResult> UploadImage(IFormFile image) { if (image == null || image.Length == 0) return BadRequest("未选择文件"); // 获取文件名和扩展名 var fileName = Path.GetFileNameWithoutExtension(image.FileName); var fileExt = Path.GetExtension(image.FileName); // 生成唯一的文件名 fileName = fileName + "_" + DateTime.Now.Ticks.ToString() + fileExt; // 保存文件到文件系统 var filePath = Path.Combine(_env.WebRootPath, "uploads", fileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { await image.CopyToAsync(fileStream); } // 保存文件到数据库 var imageModel = new ImageModel { FileName = fileName, ContentType = image.ContentType, Content = new byte[image.Length] }; using (var memoryStream = new MemoryStream(imageModel.Content)) { await image.CopyToAsync(memoryStream); } //保存到数据库中,这儿用的是sqlsugar也可以换成ef core await Db.Insertable(imageModel).ExecommandAsync(); return RedirectToAction("Index"); }
在这个例子中,我们将上传的图像保存到了 Web 根目录下的 uploads 目录中,并将文件名保存到了数据库中。您可以根据自己的需求修改这个例子。
2016 © donet5.comApache Licence 2.0