Asp.net mvc 使用ASP.NET MVC上载图像

Asp.net mvc 使用ASP.NET MVC上载图像,asp.net-mvc,file-upload,upload,Asp.net Mvc,File Upload,Upload,我需要上传一个图像作为MVC应用程序中创建操作的一部分 映像将存储在文件服务器中,数据库将包含指向该映像的路径 我计划使用以下标记获取文件: > 如何在控制器操作中访问和保存此信息?在控制器操作中,它应该显示出来 Action(HttpPostedFileBase MyImageName) { etc; } 如果需要,您还可以通过Request.Files访问该文件。我将其放在BaseController类中,我的所有控制器都从该类继承: // this just prefixe

我需要上传一个图像作为MVC应用程序中创建操作的一部分

映像将存储在文件服务器中,数据库将包含指向该映像的路径

我计划使用以下标记获取文件:

>

如何在控制器操作中访问和保存此信息?

在控制器操作中,它应该显示出来

Action(HttpPostedFileBase MyImageName) {
  etc;
}

如果需要,您还可以通过Request.Files访问该文件。

我将其放在BaseController类中,我的所有控制器都从该类继承:

    // this just prefixes datetime as yyyyMMddhhmmss to the filename, to
    // be use that no name collision will occur.
    protected static String PrefixFName(String fname)
    {
        if (String.IsNullOrEmpty(fname))
        {
            return null;
        }
        else
        {
            return String.Format("{0}{1}",
                                 DateTime.Now.ToString("yyyyMMddhhmmss"),
                                 fname);
        }
    }

    protected String SaveFile(HttpPostedFileBase file, String path)
    {
        if (file != null && file.ContentLength > 0)
        {
            if (path == null)
            {
                throw new ArgumentNullException("path cannot be null");
            }
            String relpath = String.Format("{0}/{1}", path, PrefixFName(file.FileName));
            try
            {
                file.SaveAs(Server.MapPath(relpath));
                return relpath;
            }
            catch (HttpException e)
            {
                throw new ApplicationException("Cannot save uploaded file", e);
            }
        }
        return null;
    }
然后,在控制器中,我执行以下操作:

savedPath = SaveFile(Request.Files["logo"], somepath);

Request.Files为空,但正在设置文件名的“我的字符串”字段。我的看法是:奇怪。。。返回值是多少?另外,为什么要为输入标记设置值attr?请注意,如果重新运行表单(例如,如果表单无效,用户必须更正某些内容),则不能重用它。缺少名称选项卡,视图中只有id:)
savedPath = SaveFile(Request.Files["logo"], somepath);