3

我正在使用DNN 5.6.2,並且我正嘗試構建一個自定義模塊,用戶可以在其中上傳我運行驗證的文件。如果該文件有效,那麼它被保存。有一個模塊創建的根級目錄「DataValidation」,模塊的每個實例都創建一個子目錄來保持組織結構。DotNetNuke文件管理

我沒有問題創建的目錄,但是當我上傳到他們,要麼失敗,有各種不同的錯誤或奇怪的文件上傳罰款,但在DNN數據庫它說,它是在根級別文件夾,「資料驗證」。我的代碼或方法有問題嗎?

// Method is called to create the folders before writing to them 
    public void verifyModuleFolderExists(string subfolderName) 
    { 
     bool moduleFolderExists = false; 
     bool instanceFolderExists = false; 

     ArrayList folders = FileSystemUtils.GetFolders(PortalId); 

     foreach (FolderInfo folder in folders) 
     { 
      if (folder.FolderPath == "DataValidation/") 
      { 
       moduleFolderExists = true; 
      } 

      if (folder.FolderPath == subfolderName) 
      { 
       instanceFolderExists = true; 
      } 
     } 

     if (!moduleFolderExists) 
     { 
      FileSystemUtils.AddFolder(PortalSettings, PortalSettings.HomeDirectoryMapPath, "DataValidation\\"); 
     } 

     if (!instanceFolderExists) 
     { 
      FileSystemUtils.AddFolder(PortalSettings, PortalSettings.HomeDirectoryMapPath + "DataValidation\\", subfolderName); 
     } 
    } 

    // Called on file upload 
    public void saveUploadedFile(HttpPostedFile uploadedFile, string subFolderName) 
    { 
     string path = PortalSettings.HomeDirectoryMapPath + "DataValidation\\" + subfolderName + "/"; 
     string s = FileSystemUtils.UploadFile(path, uploadedFile); 
    } 

回答

0

我認爲問題出在string path = ...部分,你有「/」這應該是「\」。這會導致它忽略潛在的路徑的文件夾部分。

所以你上傳的代碼將改爲

public void saveUploadedFile(HttpPostedFile uploadedFile, string subFolderName) 
{ 
    string path = PortalSettings.HomeDirectoryMapPath + 
        "DataValidation\\" + subfolderName + "\\"; 
    string s = FileSystemUtils.UploadFile(path, uploadedFile); 
} 
+0

這不是實際的錯誤,但相關。問題是當我添加子文件夾時,我忘了添加尾部斜線。 儘管爲了保持一致,我仍然將所有內容都轉換爲反斜槓。我之前混合過他們,強制它上傳。 – ChrisOPeterson