簡體   English   中英

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

[英]Could not find a part of the path C# asp.net, path is there

丟失。

我有以下代碼:

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);

我在生產環境中遇到了這個問題,但在開發過程中卻沒有。

我的問題是因為我省略了~符號。

我從這里出發:

var path = Server.MapPath("/App_Data/templates/registration.html");

對此:

var path = Server.MapPath("~/App_Data/templates/registration.html");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM