我正在使用DNN 5.6.2,并且正在尝试构建一个自定义模块,用户可以在其中上传运行验证所针对的文件。如果文件有效,则将其保存。模块创建一个根目录“DataValidation”,模块的每个实例创建一个子目录以保持事物的井井有条。

我创建目录没有问题,但是当我将其上载到目录时,它要么因各种不同的错误而失败,要么文件上传正常,但奇怪的是,在DNN数据库中它说它位于根目录文件夹“DataValidation”中。我的代码或方法有问题吗?

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

最佳答案

我相信问题出在string path = ...部分,您的“/”应为“\”。这将导致它潜在地忽略路径的文件夹部分。

因此,您的上传代码将更改为

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

关于.net - DotNetNuke文件管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7029382/

10-12 12:50
查看更多