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