c# - 图像未在 MVC 中上传
问题描述
我在一个博客网站上工作,我想要一个功能,作者可以上传图片以包含在帖子中。我让它工作得很好,但它保留了原始文件名。我认为这可能是未来的一个问题,所以我尝试制作一个 GUID 以避免冲突。这就是我现在在控制器中看到的内容:
if (ImageUploadHelper.IsWebFriendlyImage(image))
{
var ext = Path.GetExtension(image.FileName);
image.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), ext));
blogPost.MediaUrl = "/Uploads/" + Guid.NewGuid() + ext;
}
...“ImageUploadHelper”是一种帮助方法来处理太大和/或格式不正确的文件。无论如何,就像现在一样,可以创建帖子,我可以在 SSMS 中看到 MediaUrl 正在以看起来正确的格式保存,但文件实际上并没有上传,因此没有显示。以前,我有这个:
if (ImageUploadHelper.IsWebFriendlyImage(image))
{
var fileName = Path.GetFileName(image.FileName);
image.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), fileName));
blogPost.MediaUrl = "/Uploads/" + fileName;
}
...一切都运行良好,除了文件名冲突的可能性。我错过了什么?
解决方案
看起来您只保存扩展程序?
image.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), ext));
所以,请改用这个:
var newFileName = Guid.NewGuid() + ext;
image.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), newFileName));
blogPost.MediaUrl = "/Uploads/" + newFileName;
推荐阅读
- php - 如何在数组数组中找到相同的名称并在 PHP 中组合它们的值?
- python - 正则表达式命名组(如果存在)
- spring-boot - Spring Boot 实体、关系和存储库混淆
- javascript - 为未选中的数组复选框传递值
- r - R,闪亮:反应性 data.frame 作为一个因素,设置级别和顺序
- angular - 无法将 formGroup 添加到 FormArray
- python - Django 如何使用 POST 检索数据并使用序列化程序返回数据
- javascript - 未捕获的类型错误:$(...).easyAutocomplete 不是函数
- karate - 如何在空手道 API 测试中使用正则表达式验证模板中的响应结构
- amazon-web-services - Route53 不会传播到 Elastic Beanstalk