J'utilise CarrierWave pour mes téléchargements de fichiers dans Rails 3.1, et je cherche un moyen d'économiser de l'espace serveur. Beaucoup de photos étant téléchargées sont supérieures à 20 Mo. Ainsi, après les traiter jusqu'à 1024 x 1024, je voudrais supprimer l'original. Y a-t-il un moyen facile de le faire dans la classe de l'uploader? P>
merci, --Mark p>
5 Réponses :
Vous pouvez définir un rappel After_save dans votre modèle et supprimer la photo ..
Je ne connais pas votre modèle, mais quelque chose comme ça peut fonctionner si vous le personnifiez: P>
class User << ActiveRecord::Base after_create :convert_file after_create :delete_original_file def convert_file # do the things you have to do end def delete_original_file File.delete self.original_file_path if File.exists? self.original_file_path end end
Cela a-t-il fonctionné pour vous? Si oui, serait bien si vous marquez ma réponse, demandez correct.
Vous devez demander à Mark, car c'est le propriétaire de la question, pas moi, désolé.
class FileUploader < CarrierWave::Uploader::Base after :store, :delete_original_file def delete_original_file(new_file) File.delete path if version_name.blank? end include CarrierWave::RMagick storage :file . . # other configurations end
J'avais deux versions et j'ai réalisé que je n'avais pas besoin de l'original
donc au lieu d'avoir p> i supprimé: normal et ajouté ceci p> MAINTENANT L'original est enregistré en taille dont j'ai besoin et je n'ai pas une troisième image inutilisée sur le serveur p> p>
Impressionnant, je pense que c'est une excellente solution pour simplement faire un processus en dehors de n'importe quel bloc de version afin de ne pas enregistrer la version originale du tout si c'est vraiment grand. Merci
J'aimerais ajouter que si vous voulez toujours inclure "normal _" code> dans le nom de fichier téléchargé, comme cela se produirait dans une version code> version code>, vous pouvez affecter explicitement. Un nom de version au téléchargeur de base en utilisant
version_nomètres <<: moyen code>.
Tout le monde!
La solution sélectionnée ne fonctionne pas pour moi.
Ma solution:
Merci, vous méritez un cookie!
C'est un peu hack, mais a un avantage de performance
my_uploader.send :store_versions!, open(my_file)
Ma solution a-t-elle fonctionné pour vous?