Мы разрабатываем функциональность, которая позволяет пользователям сохранять загруженный файл. Мы пытаемся получить всплывающее окно, где пользователь может выбрать целевое местоположение/папку для сохранения своего файла. Можно ли это сделать с помощью рельсов?Сохранение файла в выбранном месте пользователя с использованием рельсов
ответ
Я думаю, что это зависит от типа содержимого и аналогичных заголовков, которые вы возвращаете пользователю. Попробуйте возвращение что-то вроде:
header('Content-disposition: attachment; filename=movie.mpg'); header('Content-type: video/mpeg');
EDIT: Я не буду при условии, что вы способны генерировать заголовки и возвращает пользователю файл по протоколу HTTP (без простых ссылок на файлы)
Я думаю, что вы пытаетесь чтобы дать что-то вроде диалогового окна браузера файлов, которое позволяет клиенту сохранять файл в определенном месте.
В случае, если вы пытаетесь дать это со своего сервера, я должен сказать, что это невозможно из-за ограничений безопасности, которые разработчики браузеров применяли для обеспечения безопасности клиента.
Другой способ - позволить клиенту загрузить плагин для браузера/ActiveX Control, который в основном является контролем над машиной клиента, тогда вы можете делать то, что хотите, и что-то подобное.
Я думаю, что без этого файл, загруженный клиентом, идентифицируется (на основе заголовков) браузером и автоматически открывает диалоговое окно сохранения файла, и вы не можете войти в безопасную арену клиента.
Я думаю, что вы ищете send_file
- он очень прост в использовании.
Я думаю, что вы хотите скачать файл. Например, на ударять URL вы хотите пользователя скачать почтовый файл код для этого вы можете сделать что-то вроде этого:
class MyController < ApplicationController
def downloadzip
send_file "path_to_file", :type=>"application/zip"
end
end
Как разрешить клиенту загрузить браузер плагин/управление ActiveX? Можете ли вы предложить способ сделать это? – Aditya
Когда мы создаем ActiveXControl, а затем используем его на сайте как объект JavaScript. Этот объект JavaScript может вызывать функции, написанные в ActiveXControl, так как плагин xmlhttprequest имеет метод send() в своем плагине. Когда клиент просматривает это, он просит загрузить этот плагин. Если вы разрешите, то браузер загрузит его и установит для вас. Аналогично, ваш плагин будет установлен, но плагины в большинстве случаев не рекомендуются, так как большинство пользователей стесняются загружать их до тех пор, пока это не будет с сайтов, которым доверяет пользователь. –