【发布时间】:2014-08-23 18:32:16
【问题描述】:
我正在尝试以我基本上已经完成的形式上传图像,但我希望为每个注册的用户专门命名图像。
例如,每封电子邮件都是唯一的,如果数据库中已经有另一封电子邮件,则表单将返回 false(它不会让他/她注册)。
所以我所做的就是将文件名更改为他/她在表单中输入的电子邮件。
但现在该文件将没有原来的扩展名(.jpg .png 等)。
有没有办法拉取文件的原始扩展名?
这是我的控制器中的内容:
[HttpPost]
public AcitonResult Register(Registration signingUp, HttpPostedFileBase avatar)
{
var db = new AvatarDBEntities();
if (ModelState.IsValid)
{
var FindEmail = db.tblProfiles.FirstOrDefault(e => e.PROF_Email == signingUp.Email);
if (FindEmail == null)
{
var Data = db.tblProfiles.Create();
Data.PROF_Email = signingUp.Email;
if (avatar != null)
{
string profpic = System.IO.Path.GetFileName(avatar.FileName);
string profpic_name = signingUp.Email + ".jpg"; //this is what I'm trying to change
string path = System.IO.Path.Combine(Server.MapPath("~/assets/images/user_images/avatars"), profpic_name);
avatar.SaveAs(path);
}
db.tblProfiles.Add(Data);
db.SaveChanges();
}
else
{
ModelState.AddModelError("Email", "That Email already exist.");
return View();
}
}
return View();
}
查看:
@using (Html.BeginForm("Register", "Main", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.TextBoxFor(r => r.Email, new { @class = "custom-input Email" })<br/>
@Html.ValidationMessageFor(a => a.Email)<br/>
<label for="avatar">Profile picture:<span class="required">*</span></label><br />
<input type="file" name="avatar" id="avatar" /><br/>
<input type="submit" />
}
图片位于文件夹中,名称为电子邮件,扩展名为.jpg。
我只想拉取原文件的扩展名,拉取email值后添加。
谢谢。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4