0
こんにちは、サーバーにアップロードする前にファイル名を変更し、データベースにパス を保存します。ここに私のコードです。しかし、同じ名前のファイルをアップロードします。 I 名前を変更したい(guidで)。どうやってやるの?サーバーasp.netコアにアップロードする前にファイル名を変更してください
[HttpPost, ValidateAntiForgeryToken]
public async Task<IActionResult> SaveAsync(NewPostViewModel model, IFormFile postImage)
{
var unitOfWork = new UnitOfWork(new NewsDbContext(_contextOptions));
// My domain class which is contains CoverPhotoPath property
var post = new Post();
if (postImage != null && postImage.Length > 0)
{
string filename = ContentDispositionHeaderValue.Parse(postImage.ContentDisposition).FileName.Trim('"');
filename = this.EnsureCorrectFilename(filename);
using (FileStream output = System.IO.File.Create(this.GetPathAndFilename(filename)))
await postImage.CopyToAsync(output);
// this is my photo path in database
post.CoverPhotoPath = filename;
}
unitOfWork.Posts.Add(post);
unitOfWork.Compelete();
return RedirectToAction("List", "News");
}
私の方法
private string EnsureCorrectFilename(string filename)
{
if (filename.Contains("\\"))
filename = filename.Substring(filename.LastIndexOf("\\") + 1);
return filename;
}
private string GetPathAndFilename(string filename)
{
return _environment.WebRootPath + "\\files\\" + filename;
}