2009-11-07 2 views
0

Мы разрабатываем функциональность, которая позволяет пользователям сохранять загруженный файл. Мы пытаемся получить всплывающее окно, где пользователь может выбрать целевое местоположение/папку для сохранения своего файла. Можно ли это сделать с помощью рельсов?Сохранение файла в выбранном месте пользователя с использованием рельсов

ответ

0

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

 
header('Content-disposition: attachment; filename=movie.mpg'); 
header('Content-type: video/mpeg'); 

EDIT: Я не буду при условии, что вы способны генерировать заголовки и возвращает пользователю файл по протоколу HTTP (без простых ссылок на файлы)

0

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

В случае, если вы пытаетесь дать это со своего сервера, я должен сказать, что это невозможно из-за ограничений безопасности, которые разработчики браузеров применяли для обеспечения безопасности клиента.

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

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

+0

Как разрешить клиенту загрузить браузер плагин/управление ActiveX? Можете ли вы предложить способ сделать это? – Aditya

+0

Когда мы создаем ActiveXControl, а затем используем его на сайте как объект JavaScript. Этот объект JavaScript может вызывать функции, написанные в ActiveXControl, так как плагин xmlhttprequest имеет метод send() в своем плагине. Когда клиент просматривает это, он просит загрузить этот плагин. Если вы разрешите, то браузер загрузит его и установит для вас. Аналогично, ваш плагин будет установлен, но плагины в большинстве случаев не рекомендуются, так как большинство пользователей стесняются загружать их до тех пор, пока это не будет с сайтов, которым доверяет пользователь. –

1

Я думаю, что вы ищете send_file - он очень прост в использовании.

0

Я думаю, что вы хотите скачать файл. Например, на ударять URL вы хотите пользователя скачать почтовый файл код для этого вы можете сделать что-то вроде этого:

class MyController < ApplicationController 
    def downloadzip 
    send_file "path_to_file", :type=>"application/zip" 
    end 
end