DotNetNuke Управление файлами - PullRequest
3 голосов
/ 11 августа 2011

Я работаю с 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);
    }

1 Ответ

1 голос
/ 12 августа 2011

Я полагаю, что проблема связана с частью string path = ..., у вас есть "/", которая действительно должна быть "\". Это может привести к игнорированию части пути к папке.

Таким образом, ваш код загрузки изменится на

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