2011-01-24 22 views
5

Używam następujący plik uploader z Rails 3: https://github.com/blueimp/jQuery-File-UploadSzyny Dostęp do przesłanego pliku i zapisanie go do spinacza

Uploader po stronie klienta pracuje bez zarzutu. Widzę w szynach pliku dziennika, że ​​jest opublikowany następujący kiedy załadować plik:

Started POST "/attachments/upload" for 127.0.0.1 at Mon Jan 24 14:15:25 -0800 2011 
    Processing by AttachmentsController#upload as */* 
    Parameters: {"_http_accept"=>"application/javascript", "authenticity_token"=>"F1h9pvCZL9HUgTjwCIAMc%252BW1cYwx7eBOPwThHfbS5ZU%253D", "file"=>#<ActionDispatch::Http::UploadedFile:0x1076a6d48 @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"joecocker.jpg\"\r\nContent-Type: image/jpeg\r\n", @original_filename="joecocker.jpg", @tempfile=#<File:/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU+++TI/-Tmp-/RackMultipart20110124-12264-rbtnth-0>>} 

Problem mam jest, że jestem w stanie zapisać plik przekazany do spinacza.

mam Ried:

@attachment = Attachment.create(:attachment => File.open(params[:file].tempfile.path)) 
@attachment = Attachment.create(:attachment => params[:file].tempfile.path) 

i ani pracy. Paperclip wstawia nazwę załącznika "RackMultipart20110124-12264-rbtnth-0"

Jakieś pomysły/sugestie, jak zapisać plik na spinaczu? dzięki

Odpowiedz

10

Po prostu użyj params[:file], aby uzyskać dostęp do pliku. Nie musisz robić params[:file].tempfile.path. Paperclip zajmuje cały obiekt podobny do File.

0

Trudno powiedzieć, nie widząc swój kod modelu, ale na podstawie tego, co widzę, że chciałbym spróbować:

@attachment = Attachment.create(params[:file]) 
1

może to być przypadek masz problemy z uprawnieniami. Paperclip domyślnie tworzy folder z systemem nazw w folderze publicznym i tam zapisuje wszystkie załączniki. Sprawdź uprawnienia do katalogu twojego projektu. Do celów testowych należy ustawić 777

Po drugie nie trzeba ręcznie zapisywać załączników. Po użyciu spinacza automatycznie zapisze załączony plik. Aby wszystko działało, musisz wykonać te kroki.

  1. Dodałeś tę linię do modelu, has_attached_file: Avatar
  2. Stworzyłeś migracja spinacza i prowadzi migrację można wygenerować migrację z następującym szyny polecenie G spinacza „Nazwa modelu” Avatar (gdzie awatar zostaną wykorzystane do przetwarzania załączników)
  3. w swojej stronie widoku gdzie przesyłasz użycie plików wystarczy użyć f.file_field. avatar
  4. w pokaz pliku/index użytku image_tag: avatar.url (: małe), zakładam obraz przywiązania i zastosował styl do obrazu jak mały kciuk itp.

Po wykonaniu powyższego kroku wystarczy uruchomić program, aby zadziałał.

Powiązane problemy