在将图像上传到Asp.net中的文件夹时找不到路径的一部分

时间:2013-09-27 07:53:16

标签: asp.net asp.net-mvc-4 ravendb

我正在将用户的个人资料图片上传到文件夹并将其路径保存到RavenDB。但我的代码给了我一个错误,找不到路径的一部分。在这一行

file.SaveAs(path);

代码:

    [HttpPost]
    public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file)
    {


        string email = User.Identity.Name;

        if (file != null && file.ContentLength > 0)
        {
            var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType);
            var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);
            file.SaveAs(path);

            using (var session = DocumentStore.OpenSession("RavenMemberShip"))
            {

                var query = from q in Session.Query<Registration>() where q.Email == email select q;
                if (query.Count() > 0)
                {
                    foreach (var updated in query)
                    {
                        fmanage.FileName = FileName;
                        fmanage.Path = path;
                        session.SaveChanges();

                    }
                }
            }
        }
        else ModelState.AddModelError("", "Remove the errors and try again");
        return View();
    }

3 个答案:

答案 0 :(得分:0)

您的路径中有输入错误...

替换...

var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);

使用...

var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"), FileName);

您还需要确保您具有写入此目录的相关权限。

根据您的错误,文件路径看起来不正确。

  

c:\ users \ wasfa \ documents \ visual studio   2012 \项目\ MvcMembership \ MvcMembership \程序App_Data \上传\ daed3def-df2b-4406-AA 9E-c1995190aa6d.image \ JPEG

daed3def-df2b-4406-aa 9e-c1995190aa6d.image \ jpeg 该文件的名称?

尝试:

[HttpPost]
public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file)
{
    string email = User.Identity.Name;

    if (file != null && file.ContentLength > 0)
    {
        var FileName = string.Format("{0}.{1}", Guid.NewGuid(), Path.GetFileName(file.FileName));            
        var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName);
        file.SaveAs(path);

        using (var session = DocumentStore.OpenSession("RavenMemberShip"))
        {

            var query = from q in Session.Query<Registration>() where q.Email == email select q;
            if (query.Count() > 0)
            {
                foreach (var updated in query)
                {
                    fmanage.FileName = FileName;
                    fmanage.Path = path;
                    session.SaveChanges();

                }
            }
        }
    }
    else ModelState.AddModelError("", "Remove the errors and try again");
    return View();
}

答案 1 :(得分:0)

file.SaveAs(path)之前,尝试检查目录是否存在,如果没有,请创建一个,

if(CreateFolderIfNeeded(path);
{
    file.SaveAs(path);
}

如果需要,创建目录的私有函数

private static bool CreateFolderIfNeeded(string path)
        {
            bool result = true;
            if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);
                }
                catch (Exception)
                { result = false; }
            }
            return result;

希望这有帮助。

答案 2 :(得分:0)

检查代码中的var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType);行。

file.ContentType不会返回您要上传的文件的扩展名。它应该像 daed3def-df2b-4406-aa 9e-c1995190aa6d.jpeg 而不是 daed3def-df2b-4406-aa 9e-c1995190aa6d.image \ jpeg

使用子字符串从上传的文件中找到扩展名。

希望这个帮助