.NET Core 上传图片,文件

首先,在 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 目录中,并将文件名保存到了数据库中。您可以根据自己的需求修改这个例子。


果糖网