Можно ли перетащить локальный файл из файлового менеджера в браузер и получить его URI?

Контекст:

Я - пользователь TiddlyWiki (автономный нелинейный персональный ноутбук), и я хотел бы улучшить рабочий процесс прикрепления изображений. Основной способ прикрепить изображение к TW - написать что-то вроде этого:

[img[image-url-either-absolute-or-relative]]

в области редактирования. Проблема в том, что если у меня есть 20 изображений, которые я хочу прикрепить, я должен извлечь 20 URL-адресов и вставить их (и окружить обертками [img[...]]. Моя идея состоит в том, чтобы написать плагин, который позволил бы мне перетаскивать 20 файлов из файлового менеджера в область редактирования и получать 20 URL-адресов (лучше обернутый базовым синтаксисом [img[...]] или другим).

Это возможно?:

Получение url (или uri, любого другого) локального файла не является обычной операцией для веб-приложений, и по соображениям безопасности это кажется запрещенным (по крайней мере, по умолчанию). Тем не менее, есть ли способ исправить это? При условии, что пользователь примет любые предупреждения безопасности.

Может быть обходной путь?

Если есть возможность обойти это решение (может быть, использовать AutoHotKey или что-то еще), я буду рад услышать (имейте в виду, что цель состоит в том, чтобы улучшить рабочий процесс, поэтому желательно минимум дополнительных нажатий / нажатий клавиш).


В настоящее время я хотел бы реализовать это для Windows 7 + Opera 12.17, но, конечно, чем более общее решение, тем лучше (в конце я поделюсь этим с другими, если это будет полезно). И да, сейчас я говорю о TW Classic, а не о TW5.

1 ответ

Решение

Подход к выполнению операции с копией состоит из двух этапов:

Во-первых, вы используете поддержку HTML5 для загрузки с помощью перетаскивания 1 [2] в файл get в браузере.

Как показывает страница, на которую я ссылаюсь, файловый API HTML5 предоставляет вам имя файла (без пути), mimetype (возможно, угаданный), размер в байтах и ​​содержимое. (Спецификация API также показывает поле для даты последнего изменения)

Второй шаг заключается в том, чтобы вернуть файл обратно на диск в известном месте относительно файла TiddlyWiki и вставить относительный URL-адрес в текущую позицию курсора.

TiddlyWiki имеет коллекцию различных используемых заставок, так что вы в основном хотите подключить и использовать тот же API TW Classic, который используется для записи файла резервной копии и дополнительного RSS ChangeLog.

Примечание. Это может быть, а может и не быть, доступно в TW5. Я помню повторное добавление поддержки резервного копирования, как все еще на дорожной карте и, судя по savers/tiddlyfox.jsВ настоящее время кажется, что он жестко закодировал путь к самому TiddlyWiki. Тем не менее, всегда есть возможность сохранить их в вики как тиддлеры двоичных данных.

Что касается того, чтобы сделать это без копирования...

У меня довольно сильное впечатление, что по соображениям безопасности сделать это невозможно, но вот несколько идей:

  1. Если вы хотите либо вручную ввести путь, либо гарантировать, что файлы всегда будут в известной папке, вы можете использовать File API, чтобы получить только имя файла.
  2. Вы можете написать скрипт или плагин, который реализует этот рабочий процесс:
    1. Скопируйте файл в Проводник
    2. Поместите курсор туда, где вы хотите URL
    3. Нажмите глобальную горячую клавишу

Как человек, который перешел на Linux много лет назад, я бы использовал Python+PyGTK+python-xlib, но AutoHotKey под GPL и должен позволять вам делать это в Windows:

  1. Это может связать глобальную горячую клавишу
  2. Он может читать буфер обмена
  3. Если вы не можете найти или написать AHK клон Python os.path.relpath а также urllib.pathname2urlВы можете вызвать внешний скрипт для выполнения работы.
  4. Он может имитировать нажатия клавиш, позволяя автоматически вводить текст в окне редактирования вашего TiddlyWiki.
Другие вопросы по тегам