在ASP.NET MVC中上载并更改图像的新名称

问题描述

我想在上传图像后输入图像的新名称,然后按提交,然后将图像更改为新名称并将其保存在项目路径中,请指导我如何编写代码?非常感谢

在此处输入代码

    <div class="row">
        <div class="col-sm-6">
            Image Name: <input type="text" id="name"/>

            <input type="file" class="form-control" id="files" name="files">

            <input type=submit/>
        </div>
    </div>

代码

公共ActionResult UploadFiles(HttpPostedFileBase文件) {

        string newFileName = "";

        if (files != null)
        {
            string path = HttpContext.Server.MapPath(@"~/Data/images");

            bool exists = Directory.Exists(path);

            if (!exists)
                Directory.CreateDirectory(path);

            string extension = Path.GetExtension(files.FileName);
            newFileName = Guid.NewGuid() + extension;
            string filePath = Path.Combine(path,newFileName);
            files.SaveAs(filePath);

        }
        return View();
    }

解决方法

从视图中将#name值连同参数形式的文件一起传递到控制器方法UploadFiles中。

控制器:

public ActionResult UploadFiles(HttpPostedFileBase files,string newName) {

        string newFileName = "";

        if (files != null)
        {
            string path = HttpContext.Server.MapPath(@"~/Data/images");

            bool exists = Directory.Exists(path);

            if (!exists)
                Directory.CreateDirectory(path);

            string extension = Path.GetExtension(files.FileName);
            newFileName = newName.Trim() + extension; //pass newName here
            string filePath = Path.Combine(path,newFileName);
            files.SaveAs(filePath);

        }
        return View();
    }

您还可以在文件名中添加当前的Datetime:

newFileName= DateTime.Now.ToString("yyyyMMdd") + "-" + newName.Trim() + extension;