2013-11-14 2 views
0

Я использую клиент API Google Ruby для загрузки файлов Google Диска (с помощью downloadUrl). Я могу успешно загрузить файл, но в следующий раз я хочу, чтобы пользователь веб-сайта сохранил файл локально (по месту его выбора). Что мне делать после кода ниже, чтобы достичь этого?Как запросить пользователя сохранить загруженный файл из API Google Диска в Rails

client = Google::APIClient.new 
drive = client.discovered_api('drive', 'v2') 

client.authorization.client_id = ENV["GOOGLE_CLIENT_ID"] 
client.authorization.client_secret = ENV["GOOGLE_CLIENT_SECRET"] 
client.authorization.redirect_uri = '...' 
client.authorization.access_token = '...' 

client.authorization.scope = https://www.googleapis.com/auth/drive 
result = client.execute(
    :api_method => drive.files.get, 
    :version => 'v2', 
    :parameters => { 'fileId' => "..."} 
) 

download_url = result.data.downloadUrl 

if download_url 
    fileResult = client.execute(:uri => download_url) 
else 
    #HANDLE ERRORS 
    .... 
end 

# WHAT TO ADD HERE TO PROMPT USER TO SAVE THE FILE LOCALLY? 
+0

вы можете использовать 'send_file' как таковой' send_file ([объектный файл], тип: [ВАШ MIME TYPE], расположение: ложь, распоряжения: 'привязанность') 'это выведет ваш файл в виде вложения в браузер, который заставит пользователя открыть или сохранить. – engineersmnky

ответ

0

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

send_data fileResult.body, 
       :disposition => fileResult.response.env[:response_headers]["content-disposition"], 
       :type => fileResult.response.env[:response_headers]["content-type"] 
Смежные вопросы