Wgrywanie pliku do Railsów
Jestem nowy w railsach i piszę witrynę RESTful przy użyciu techniki CRUD. Do tej pory stworzyłem trzy strony, z których każda umożliwia użytkownikowi tworzenie, edycję i usuwanie wiersza z bazy danych. Jednak moja czwarta strona będzie musiała zawierać formularz przesyłania plików, ale a) Nie wiem, jak działa system plików z Railsami, więc nie wiem, gdzie powinny być przechowywane pliki. Plik będzie miał około 100 KB i nie można go zapisać w pamięci tymczasowej, ponieważ będzie stale pobierany. I b) nie wiem, jak pisać do pliku.
Byłoby wspaniale, gdybyś mógł mi powiedzieć, jak zrobić to, o czym wspomniałem powyżej - utwórz wejście rozruchowe w formularzu wejściowym, a następnie zapisz plik na ścieżce do pliku w oddzielnym katalogu.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
5 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Zaktualizuj 2018
Chociaż wszystko poniżej jest nadal prawdą, Rails 5.2 zawiera teraz , który pozwala ładować rzeczy, takie jak przesyłanie bezpośrednio do S3 (lub innych usług przechowywania w chmurze), konwersje obrazów itp. E. Powinieneś sprawdzić
przywództwo
https://edgeguides.rubyonrails ... .html
szyny i sam zdecyduj, co odpowiada Twoim potrzebom.
Chociaż istnieje wiele klejnotów, które całkiem dobrze rozwiązują problem z przesyłaniem plików (zobacz listę na https://www.ruby-toolbox.com/c ... ploads), rails mają wbudowane pomocniki, które ułatwiają własne rozwiązanie.
Użyj pomocnika -form w swoim formularzu, a rails obsługuje przesyłanie za Ciebie:
W kontrolerze będziesz mieć dostęp do pobranego pliku w następujący sposób:
Zależy to od złożoności tego, co chcesz osiągnąć, ale powinno wystarczyć do prostych zadań przesyłania plików. Ten przykład pochodzi z instrukcji szyn, możesz tam przejść po więcej informacji:
http://guides.rubyonrails.org/form_helpers. html#uploading-files
http://guides.rubyonrails.org/ ... files
Anonimowy użytkownik
Potwierdzenie od:
Wrzesień 2018 r
roku
Dla tych, którzy ostatnio sprawdzali to pytanie,
Rails 5.2+ ma teraz domyślną pamięć ActiveStorage & amp; Gorąco polecam to sprawdzić.
https://guides.rubyonrails.org ... .html
Ponieważ jest teraz częścią rdzenia Rails 5.2+, jest bardzo dobrze zintegrowany & amp; ma świetne funkcje po wyjęciu z pudełka (wciąż wszystkie inne znane klejnoty, takie jak Carrierwave, Shrine, spinacz, ... są świetne, ale ten oferuje bardzo fajne funkcje, które możemy rozważyć w każdym nowym projekcie Rails)
Komenda clip została wycofana z klejnotu na rzecz Rails ActiveStorage.
Oto strona github dla ActiveStorage
https://github.com/rails/rails ... orage
& amp; wiele zasobów jest dostępnych wszędzie
Znalazłem też ten film
https://gorails.com/episodes/f ... s-5-2
bardzo przydatne do zrozumienia funkcji Activestorage
Anonimowy użytkownik
Potwierdzenie od:
carrierwave
https://github.com/jnicklas/carrierwave... Jeśli wiki nie pomaga, jest
dobry RailsCast
http://railscasts.com/episodes ... loads
o najlepszym sposobie jego użycia. Podsumowując, formularze Railsów mają pole typu , które wywołuje okno dialogowe przesyłania plików. Możesz go użyć, ale „magia” jest wykonywana przez klejnot .
Nie wiem, co masz na myśli mówiąc „jak pisać do pliku”, ale mam nadzieję, że to dobry początek.
Anonimowy użytkownik
Potwierdzenie od:
W kontrolerze
Tutaj zwraca białą listę
params [: person]
(zdefiniuj siebie)Zapisz plik jako,
Uwaga: dodaj tę ścieżkę do & amp;, jeśli chcesz ponownie użyć tego pliku, dodaj tę ścieżkę do aplikacji przez Ilekroć formularz czyta pole pliku, dostaje miejsce w folderze tmp, później możesz go przechowywać w domu, podałem przykład przechowywania w aktywach
Uwaga
: przechowywanie takich plików zwiększy rozmiar aplikacji, lepiej przechowywać ją w bazie danych za pomocą .
Anonimowy użytkownik
Potwierdzenie od:
użyj tego do przechowywania w pliku podczas pracy na komputerze lokalnym