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?