【发布时间】:2019-05-10 10:45:28
【问题描述】:
我正在制作一个包含相册和图片的网站,只是为了学习如何使用图片。我可以更改图像名称并将它们上传到图像文件夹。
我的问题有两个:
(1) 不知道如何将图片路径添加到数据库
(2) 我不知道如何为每个相册添加图片列表
我花了很多时间试图找到没有结果的答案。
public class Image
{
public int Id { get; set; }
public int AlbumId { get; set; }
[ForeignKey("AlbumId")]
public virtual Album Album { get; set; }
public string ImagePath { get; set; }
}
public class Album
{
public int Id { get; set; }
public string AlbumTitle { get; set; }
public List<Image> Image { get; set; }
}
public async Task<IActionResult> UploadImage(int id, Album album)
{
if (id != album.Id)
{
return NotFound();
}
var newFileName = string.Empty;
if (HttpContext.Request.Form.Files != null)
{
var fileName = string.Empty;
string PathDB = string.Empty;
var files = HttpContext.Request.Form.Files;
foreach (var file in files)
{
if (file.Length > 0)
{
fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
var myUniqueFileName = Convert.ToString(Guid.NewGuid());
var FileExtension = Path.GetExtension(fileName);
newFileName = myUniqueFileName + FileExtension;
fileName = Path.Combine(_hostingEnvironment.WebRootPath, "images") + $@"\{newFileName}";
PathDB = "images/" + newFileName;
using (FileStream fs = System.IO.File.Create(fileName))
{
file.CopyTo(fs);
fs.Flush();
}
}
}
}
_db.Update(album);
await _db.SaveChangesAsync();
return View("Index");
}
上传图片的相册 ID 传入该方法。我需要将这张专辑 ID 以及图像路径(我还需要图像名称吗?)到数据库中。我该怎么做?
还有,是
public List<Image> Image { get; set; }
在相册类中存储图像的正确方法?
【问题讨论】:
-
在您的数据库中,您需要定义类型为 varbinary(max) 的列,而在 c# 中,为了将图像传递到数据库,您需要将读取的图像转换为字节数组 []
-
您需要更新或创建 album.id 。将文件名和album.Id保存在db.Image中
标签: asp.net asp.net-core