【问题标题】:How to upload image with custom name with it's original extension?如何使用原始扩展名上传具有自定义名称的图像?
【发布时间】: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


    【解决方案1】:

    我认为你正在寻找的是

    Path.GetExtension(string fileName)
    

    所以你的代码变成了

    string profpic_name = signingUp.Email + Path.GetExtension(avatar.FileName);
    

    【讨论】:

    • 哦,你先搞定了 :)
    • @C.J.他们叫我速写 dav_i。 (他们不是真的。)
    【解决方案2】:

    有一个方法叫Path.GetExtension

    先将扩展存储在一个临时变量中,然后再使用它。

    string tempExtension = Path.GetExtension(avatar.FileName);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 2017-11-15
      • 1970-01-01
      • 2015-04-02
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多