c# - 找不到路径的一部分 C# asp.net,路径在那里

标签 c# asp.net

迷失了。

我有这个代码:

public ActionResult UploadCV(string userId, HttpPostedFileBase cvfile)
    {
        if (cvfile != null && cvfile.ContentLength > 0)
        {                
            var bareFilename = Path.GetFileNameWithoutExtension(cvfile.FileName);
            var fileExt = Path.GetExtension(cvfile.FileName);
            //save to dir first
            var path = Path.Combine(Server.MapPath("/App_Data/userfiles/"),
                                    userId + "/");
            var dir = Directory.CreateDirectory(path);
            cvfile.SaveAs(path);
            //save to db..
            var user = Ctx.Users.FirstOrDefault(x => x.Id == userId);
            user.CvLocation = "/App_Data/userfiles/" + userId + "/" + bareFilename + fileExt;
            user.CvUploadDate = DateTime.Now;
            Ctx.SaveChanges();

        }
        return RedirectToAction("Index", "Settings", new { area = "" });
    }

上线:

cvfile.SaveAs(path);

我收到错误

Could not find a part of the path 
'C:\Users\me\big\ol\path\App_Data\userfiles\4cf86a2c-619b-402a-80db-cc1e13e5288f\'.

如果我导航到资源管理器中的路径,效果很好。

我想要解决的问题是按用户在数据库中拥有的唯一 GUID 对用户上传进行排序。我希望文件夹“userfiles”具有用户 GUID 的文件夹名称,并且在该文件夹中我有“mycoolpic.png”

知道我在这里做错了什么吗?

最佳答案

您正尝试在不提供文件名的情况下进行保存。 HttpPostedFileBase.SaveAs需要一个代表文件名而不仅仅是路径的参数。 只需将服务器path与之前提取的bareFilename结合使用即可。

 var path = Path.Combine(Server.MapPath, "/App_Data/userfiles/"),userId);
 var dir = Directory.CreateDirectory(path);
 cvfile.SaveAs(Path.Combine(path, bareFilename);

关于c# - 找不到路径的一部分 C# asp.net,路径在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687737/

相关文章:

asp.net - 如何在 IIS 7 中设置对 App_data 的写权限?

asp.net - CSS 压缩和组合/js 缩小 - 最好在运行时或构建时进行?

c# - OOP 中的默认参数是不好的做法吗?

c# - 如果窗口的所有者是通过 WindowInteropHelper 设置的,如何获取窗口的所有者?

javascript - Window.Navigate 方法在 Firefox 和 Chrome 中不起作用

.net - Web 控件命名约定和 ReSharper

c# - 确定字符串是否为合法 XML 元素名称的有效方法

c# - 从csv导入到asp.net中的mysql数据库中删除双引号("")

c# - 在 Ninject 的所有程序集中加载模块

javascript - ASP.net JavaScript MS Outlook