Roxy Fileman и виртуальные каталоги

У меня есть решение с двумя проектами в одном, один называется "admin", другой - "работа" (экземпляр Umbraco) - у Work есть папка с изображениями, которая содержит изображения для баннеров сайта /thumnails и т. Д. - Admin позволяет пользователю с правами администратора добавлять новые истории, с изображениями, используя TinyMCE
и подключаемый файлмен.

Таким образом, в IIS я создал виртуальную папку в Admin, которая указывает на папку с изображениями в работе, однако, когда я пытаюсь просмотреть папку в fileman, она повторяет много подкаталогов и не отображает никаких изображений. И я также не могу загрузить никаких изображений, это просто дает мне ошибку. Запись Files_Root в файле conf.json выглядит следующим образом.

    "FILES_ROOT":          ".//images//",

Итак, как мне заставить эту виртуальную папку работать с fileman?

1 ответ

Я также наткнулся на эту проблему - когда FILES_ROOT указывает на виртуальную папку в IIS, компонент Fileman задыхается при попытке получить список файлов, а также при загрузке и, возможно, в некоторых других местах. Запросы не проходят должным образом местоположение папки, когда она ссылается на виртуальный каталог. Если вы добавите сетевой сниффер, вы увидите запросы, отправленные на fileman/asp_net/main.ashx, и ответы, которые возвращаются с ошибкой "Формат данного пути не поддерживается".

Я сообщил об ошибке автору через веб-сайт, но я также обнаружил, что если вы замените виртуальный каталог на SYMLINK, все, похоже, будет работать.

Если у вас есть доступ к IIS, вы, вероятно, имеете доступ к командной строке для создания символической ссылки, что можно сделать следующим образом:

mklink /j "{virtual location within your website}" "{physical location}"

Оба местоположения должны быть полными путями, включая буквы дисков, а "виртуальное" местоположение должно быть в корне вашего сайта.

До сих пор я не видел проблем со ссылками на файлы таким образом, а не на виртуальный каталог, за исключением того, что началось резервное копирование моего сайта, включая файлы в символической ссылке, поскольку O/S теперь видит это как физическую папку на сайте.

Надеюсь, это поможет!!

Вероятно, не подходит для каждой ситуации (возможно, даже для пользователя, задавшего вопрос), но решил, что поделюсь, если это может помочь кому-то, кто пытается сопоставить виртуальные каталоги с общими сетевыми ресурсами. Мне нужно было изменитьListDirTree функция в файле fileman/asp_net/main.ashx

protected void ListDirTree(string type)
{
    string filesRoot = GetFilesRoot();
    DirectoryInfo d = new DirectoryInfo( filesRoot );
    if ( !d.Exists )
        throw new Exception( "Invalid files root directory. Check your configuration: " + filesRoot );

    ArrayList dirs = ListDirs( d.FullName );
    dirs.Insert( 0, d.FullName );

    string localPath = _context.Server.MapPath( "~/" );
    bool isLocal = filesRoot.Contains( ":" );
    _r.Write( "[" );
    for ( int i = 0; i < dirs.Count; i++ )
    {
        string dir = (string)dirs[i];
        string lPath;
        //If it is a local path, leave it as it was
        if ( isLocal )
            lPath = dir.Replace( localPath, "" ).Replace( "\\", "/" );
        else
            //Otherwise probably a virtual directory, put the original files_root location back
            lPath = dir.Replace( filesRoot, GetSetting( "FILES_ROOT" ) ).Replace( "\\", "/" );
        _r.Write( "{\"p\":\"/" + lPath + "\",\"f\":\"" + GetFiles( dir, type ).Count.ToString() + "\",\"d\":\"" + Directory.GetDirectories( dir ).Length.ToString() + "\"}" );
        if ( i < dirs.Count - 1 )
            _r.Write( "," );
    }
    _r.Write( "]" );
}
Другие вопросы по тегам