Enregistrement de fichiers à l'aide d'un Trombone, sans les télécharger
J'avais une petite question. Est-il possible d'enregistrer un fichier sans le télécharger via un formulaire?
Par exemple, disons que je suis à la recherche des pièces jointes de mails, et je veux les enregistrer à l'aide d'un trombone. Comment dois-je faire? Puis-je manuellement appeler un save_file(ou quelque chose de similaire) quelque part?
Toute aide serait grandement appréciée!
Vous devez vous connecter pour publier un commentaire.
J'ai une tâche rake qui charge les images (client logos) à partir d'un répertoire directement sur parperclip. Vous pouvez probablement s'adapter à vos besoins.
C'est mon simplifiée modèle Client:
Puis sur ma tâche rake je fais ceci:
Ce qui concerne les!
f = File.new(logo_path) client.logo = f f.close
Le fichier enregistré dans le Trombone n'a pas à être téléchargés directement par le biais d'un formulaire.
Je suis à l'aide d'un Trombone dans un projet d'enregistrer des fichiers à partir d'Url de webcrawler résultats. Je ne suis pas sûr de savoir comment vous obtenez des pièces jointes (sont-ils sur le système de fichiers local du serveur? Votre application est une application de messagerie comme GMail?) mais aussi longtemps que vous pouvez obtenir un fichier de flux (par l'intermédiaire de quelque chose comme
open(URI.parse(crawl_result))
dans mon cas...), vous pouvez joindre le fichier à votre modèle de champ qui est marquéhas_attached_file
.Ce billet de blog sur Téléchargement facile via l'URL avec un Trombone m'a aidé à comprendre cela.Puisqu'il apparaît maintenant le blog original n'est plus disponible - voici l'essentiel, c'tiré de la wayback machine:
Cet exemple montre une Photo du modèle qui a une Image en pièce jointe.
La technique que nous utilisons nécessite l'ajout d'une
*_remote_url
(string) de la colonne de votre attachement, qui est utilisé pour stocker l'URL d'origine. Donc, dans ce cas, nous devons ajouter une colonne nomméeimage_remote_url
les photos de la table.Rien de spécial n'est nécessaire pour le contrôleur...
Dans la forme, nous avons ajouter un text_field appelé
:image_url
, afin que les gens peuvent télécharger un fichier ou fournir une URL...La viande des choses est dans la Photo de modèle. Nous avons besoin de
require open-uri
, ajouter unattr_accessor :image_url
, et les normales dehas_attached_file
choses. Ensuite, nous ajoutons unbefore_validation
de rappel pour télécharger le fichier dans leimage_url
attribut (si fourni) et enregistrer l'URL d'origine commeimage_remote_url
. Enfin, nous faisons unvalidates_presence_of :image_remote_url
, ce qui nous permet de sauver de nombreuses exceptions qui peuvent être levées lorsque vous essayez de télécharger le fichier.Tout fonctionne normalement, y compris la création de vignettes, etc. De Plus, puisque nous faisons tous de la partie la plus dure dans le modèle, "téléchargement" un fichier via l'URL travaille de l'intérieur script/console: