Co zrobić, aby Paperclip nie zapisywał oryginalnego pliku po jego przesłaniu? Albo jeszcze lepiej, aby zapisać skalowaną wersję pliku jako oryginał?Jak powiedzieć spinaczowi, aby nie zapisać oryginalnego pliku?
Odpowiedz
wierzę, że można po prostu zdefiniować styl dla: original mieć spinacza zastąpić oryginalny z tej wielkości.
:styles => { :original => '300x168>', :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, ...}
Paperclip zawsze domyślnie zapisuje oryginał, ale "wierzę", że jeśli po prostu usuniesz go z migracji, nie będzie próbował go zapisać.
Zapisuję skalowany oryginał na moim modelu, aby użytkownicy mogli później edytować jego zdjęcie. Mój model wygląda następująco:
:styles => { :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, :resized_thumb => {:geometry => "115x70>"}, :deal => {:geometry => "64x56#"},
:cropped_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}#", :jcrop => true},
:resized_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}>"},
:orig => '300x168>', #this is the scaled original that I call later
:cropped_orig => {:geometry => '300x168#', :jcrop => true},
:resized_orig => {:geometry => '300x168>'} },
:processors => [:jcropper]
Dziękuję za odpowiedź, Trip. – Jade
Rozwiązanie Cris G może być dobre w większości prostych przypadków, ale ma ograniczenia. należy wziąć pod uwagę to, że: styl: oryginalny Paperclip przetwarza najpierw wszystkie inne, więc po tym uaktualnieniu: oryginalny obraz (znacznie mniejszy teraz) będzie źródłem dalszego przetwarzania. Dlatego jesteś zmuszony do zachowania: oryginalny styl w najlepszej rozdzielczości. Sytuacja jest gorsza, ponieważ trzeba przycinać obrazy za pomocą procesora: w takiej sytuacji naprawdę potrzebna jest prawdziwa oryginalna jakość.)
Więc polecam Ci nieco surowy (potrzeba, aby dowiedzieć się, jak dostać się co załączników modelu) rozwiązanie:
after_save :reprocess_attach
private
def reprocess_attach
if self.<atch_name>.present? && Pathname.new(self.<atch_name>.path).exist?
self.<atch_name>.save
File.unlink(self.<atch_name>.path)
end
end
nie dbają o to, co było przetwórstwo za sceną. To po prostu zabija oryginalny plik)
Masz całkowitą rację, pomijając geometrię: oryginał wpływa na przetwarzanie wszystkich pozostałych. Ale czy mógłbyś wyjaśnić swoje rozwiązanie, aby nie dopuścić do tego, by oryginał został przesłany bardziej szczegółowo, jestem zdezorientowany! Dzięki! – Sujimichi
@ Sujimichi również, po zapisaniu, "reprocess_attach" sprawdza czy załącznik istnieje jako oryginalny plik. Jeśli tak, to zapewnia, że wszystkie pliki są przepłukiwane w systemie plików (zapisywanie) i po usunięciu oryginalnego pliku. –
- 1. Jak mogę powiedzieć Django, aby zapisać moją testową bazę danych?
- 2. Jak powiedzieć RadioButtonList, aby NIE generować tabeli
- 3. Jak powiedzieć bash, aby nie rozszerzać zmiennej $ _?
- 4. Jak powiedzieć curl, aby sprawdzić istnienie pliku przed pobraniem?
- 5. Jak mogę powiedzieć Mutt, aby nie przechowywać wysłanych wiadomości?
- 6. Web2py przesłać z oryginalnego pliku
- 7. Nie można zapisać pliku php.ini
- 8. Jak mogę uczynić, aby operator nie zapisał oryginalnego pliku po przetworzeniu wersji?
- 9. nie można zapisać pliku applicationHost.config
- 10. Jak mogę powiedzieć Play Framework 2 i Ebean, aby zapisać puste pola?
- 11. Jak powiedzieć valgrind, aby zapamiętywać rozwidlone procesy?
- 12. Jak powiedzieć Fluent NHibernate, aby nie mapować właściwości klasy
- 13. Jak mogę powiedzieć RavenDB, aby ignorował właściwość, ale nie WebAPI?
- 14. Jak mogę powiedzieć kompilatorowi, aby nie tworzył obiektu tymczasowego?
- 15. Jak powiedzieć Django, aby nie buforował danych HTTP POST?
- 16. Jak mogę powiedzieć układowi robot, aby nie rejestrował słowa kluczowego?
- 17. Jak powiedzieć powiedzieć javadoc, że mój okres nie kończy zdanie
- 18. Jak zapisać wyjście pliku AUGraph do pliku?
- 19. Jak zapisać UIImage do pliku?
- 20. Grunt Concat nie może zapisać do pliku
- 21. Vim nie można zapisać pliku (E212)
- 22. Nie można zapisać pliku ustawień StyleCop
- 23. Jak powiedzieć lcov, aby zignorować linie w plikach źródłowych
- 24. Jak zapisać numpy zamaskowaną tablicę do pliku
- 25. Jak zapisać plik PictureBox.Image do pliku?
- 26. Elisp: jak zapisać dane w pliku?
- 27. Jak mogę zapisać sesję R do pliku?
- 28. Czy można powiedzieć programowi Visual Studio, aby nie traktował pliku źródłowego jako "komponentu"?
- 29. Jak zapisać podsumowanie (lm) do pliku?
- 30. tinyMCE ajax, aby zapisać dane
Sprawdź moją odpowiedź [tutaj] (http://stackoverflow.com/questions/25467130/rails-4-and-paperclip-stop-the-original-style-file-upload-to -copy-it-from-an/25585186) – laertiades