Как открыть сетевую папку с Mac в приложении Adobe Air?

У меня есть приложение Air, которому нужно ссылаться на файлы, расположенные в общей сетевой папке. Из приложения Air, работающего в Windows, я могу получить доступ к общему ресурсу через объект File следующим образом:

var folder:File = new File("file:///\\\\server\\share\\parent_folder\\folder");

На Mac это не работает, и я не могу найти какой-либо вариант пути, который работает. Я могу подключиться к серверу через Finder, используя путь "smb://server/share/parent_folder/folder", а затем я могу создать объект File через некоторые (по-видимому) запутанное монтирование тома с именем, которое, кажется, меняется в зависимости от того, сколько существующих подключений к «//серверу/общему ресурсу» (например, «/Volumes/share», «/Volumes/share-1» и т. д. )

Есть ли способ из приложения Air подключиться к общей папке сервера на Mac без необходимости предварительного подключения пользователя через Finder? В худшем случае, есть ли способ выполнить консольную команду из Air? Предположительно, я мог бы установить общий ресурс самостоятельно. Я не могу придумать обходной путь, кроме как требовать, чтобы пользователи Mac сначала вручную подключались к серверу через средство поиска, а затем предоставляли приложению общий путь каждый раз, когда они запускают приложение!

Заранее спасибо за любое работоспособное решение!


person Bill Brooks    schedule 16.01.2013    source источник


Ответы (2)


Если я правильно помню, нужно монтировать сетевой путь. Но пользователь может смонтировать сетевой диск и настроить его автоматическое повторное подключение при входе пользователя в систему, чтобы ему не приходилось повторно подключаться каждый раз при использовании вашего приложения. Взгляните на http://osxdaily.com/2010/09/20/map-a-network-drive-on-a-mac/, в котором есть инструкции по автоматическому подключению.

person mcgraphix    schedule 24.01.2013
comment
Не идеальное решение, но это сработает. Я могу сопоставить папку и заставить ее повторно подключаться при входе в систему. Однако имя не всегда предсказуемо. Например, maounting //server/share/folderName создает монтирования /Volumes/share, /Volumes/share-1, /Volumes/share-2 и т. д. в зависимости от количества существующих подключений к папкам в //server /Поделиться. Есть ли способ (под Lion 10.7) заставить его последовательно монтировать, скажем, /Volumes/folderName? - person Bill Brooks; 25.01.2013
comment
Пометка как ответ, так как это в основном будет работать. Все еще ищет способ получить согласованное имя монтирования. - person Bill Brooks; 28.01.2013

Для проблемы Mac используйте метод resolvePath() File для ссылки на файл/папку; см. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html#resolvePath()

eg:

var folder:File = File.applicationDirectory.resolvePath("absolute/path/to/folder");

Обратите внимание, что «file:///» не следует использовать, а слэши должны быть «/», а не «\».

person Community    schedule 17.01.2013
comment
Это не работает. Использование пути //server/share/parent_folder/folder возвращает объект File, но file.exists возвращает false. - person Bill Brooks; 17.01.2013