2017-01-26 5 views
0

Я хотел бы выполнить сценарий оболочки с моим приложением Rails на клиенте.Выполнение сценария оболочки оболочки Ruby on Rails на клиенте

В моем случае, я хочу открыть файл .odt на клиентском ПК, когда он нажимает на ссылку.

На данный момент все, что я могу сделать, это запустить сценарий оболочки на моем сервере, используя e.g. `libreoffice path_to_my_odt_file`. В этом случае я открываю свой файл с помощью LivreOffice на сервере.

Есть ли способ выполнить этот код на моем клиенте из Rails?

Если я пытаюсь запустить приложение так, как оно есть, когда я вызываю действие, вызывающее мой скрипт, файл открывается на моем Сервере.

Заранее спасибо.

+2

Я не думаю, что вы можете запускать произвольные команды на клиенте, щелкая по ссылке, что представляет собой огромный риск для безопасности. Если вы отправляете файл .odt на клиент (т. Е. Браузер загружает файл), пользователи могут легко открыть файл. – jfornoff

+1

Да, это невозможно, если только вы не загрузили клиент и не запускали сценарий оболочки. – thesecretmaster

+0

Я согласен с тем, что это будет серьезным недостатком безопасности ... Я создаю файл .odt в своем приложении, и я хотел бы показать его на клиенте (поскольку я не могу открыть этот файл в браузере). Я думал о том, чтобы позволить клиенту загрузить файл, но это может вызвать некоторую боль ... Я хотел бы сделать это как можно более автоматическим, в том смысле, что это не потребует дальнейшего взаимодействия с пользователем. Любая идея о том, как это сделать? – ThalesMiguel

ответ

1

Как упоминалось в комментариях, выполнение произвольных сценариев оболочки на клиенте с http-сервера было бы огромным недостатком безопасности.

Пока ваш сервер Rails предоставляет ссылку для загрузки с send_data (например, dynamically_generated_odt_file), браузер спросит, следует ли загрузить файл или открыть его. Если пользователь хочет, чтобы избежать каких-либо дополнительных взаимодействия, есть возможность tick:

«Делайте это автоматически для файлов, как это теперь»

Вы, возможно, придется указать тип MIME, по добавление

Mime::Type.register "application/vnd.oasis.opendocument.text", :odt 

до config/initializers/mime_types.rb.

+0

Отличный ответ. Большое спасибо. – ThalesMiguel

Смежные вопросы