Tenho um URL para uma imagem que desejo salvar localmente, para que eu possa usar o Paperclip para produzir uma miniatura para o meu aplicativo. Qual é a melhor maneira de baixar e salvar a imagem? (Examinei o tratamento de arquivos ruby, mas não encontrei nada.)
ruby-on-rails
ruby
file-handling
Alok Swain
fonte
fonte
IO.copy_stream(open('http://example.com/image.png'), 'destination.png')
require 'open-uri'
, apenas utilizado o código sob eleUma versão ainda mais curta:
Para manter o mesmo nome de arquivo:
fonte
Se você estiver usando o PaperClip, o download de um URL agora será tratado automaticamente.
Supondo que você tenha algo como:
No seu modelo, basta especificar a imagem como uma URL, algo como isto (escrito à mão e deliberadamente):
Você provavelmente desejará colocar isso em um método em seu modelo. Isso também funcionará bem no sistema de arquivos temporário do Heroku.
O clipe de papel irá levá-lo a partir daí.
fonte: documentação do clipe de papel
fonte
Eu acho que esta é a maneira mais clara:
fonte
Confira Net :: HTTP na biblioteca padrão. A documentação fornece vários exemplos de como baixar documentos usando HTTP.
fonte
Kernel#open
permite não apenas o acesso ao arquivo, mas também a chamada do processo, prefixando um símbolo de barra vertical (por exemplo,open("| ls")
). Portanto, isso pode levar a um sério risco à segurança usando entrada variável no argumento deKernel#open
.