Скрепка - как вы загружаете PDF-файлы? - PullRequest
4 голосов
/ 02 ноября 2010

У меня есть модель, которая загружает изображения и PDF-файлы в Amazon S3 - изображения работают, PDF-файлы не работают.

Вот как выглядит моя модель:

validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png', 'image/gif']
has_attached_file :pdf,
    :storage => :s3,
    :s3_credentials => "#{::Rails.root.to_s}/config/s3.yml",
    :path => "/userpdfs/:id/:basename.:extension"
has_attached_file :photo,
    :styles => {:medium => "200x300>", :thumb => "100x150>" },
    :storage => :s3,
    :s3_credentials => "#{::Rails.root.to_s}/config/s3.yml",
    :path => "/userphotos/:style/:id/:basename.:extension"

Амазон показывает userphotos, но не userpdfs.Оба типа имеют четыре поля в моей базе данных:

pdf_name
pdf_type # could also be a word doc
pdf_size
pdf_updated_at
  1. Почему не загружается резюме (изображения делают!)
  2. Как проверить поле: pdf толькоРазрешить .pdf, .doc, .docx, .txt?

Редактировать

Загрузка любого изображения в поле: pdf работает!Кажется, что-то в самих PDF-файлах портит систему.Мой сервер говорит, что он сохранил файлы на S3, но они не отображаются в каталоге.

PDF теперь работают , только если в заголовке нет пробелов .С пробелами я получаю следующую ошибку: Errno::EPIPE: Broken Pipe.

Ответы [ 3 ]

5 голосов
/ 20 апреля 2011

Попробуйте это

>> Attachment.last.file_path
=> "https://s3.amazonaws.com/content.dynamixccw.com/attachments/4/Financial goal Report.pdf"
>> url = _
=> "https://s3.amazonaws.com/content.dynamixccw.com/attachments/4/Financial goal Report.pdf"
>> url.gsub(' ', '%20')
=> "https://s3.amazonaws.com/content.dynamixccw.com/attachments/4/Financial%20goal%20Report.pdf"

Чтобы подтвердить, бросьте это в

validates_attachment_content_type :pdf, :content_type => ['application/pdf', 'application/msword', 'text/plain'], :if => :pdf_attached?

def pdf_attached?
  self.pdf.file?
end
1 голос
/ 07 января 2012

Для загрузки документа в формате PDF вам просто нужно сделать следующее:

В вашей модели просто наберите

validates_attachment_content_type :uploaded_file, :content_type =>['application/pdf']

Это работает для меня, я надеюсь, что это поможет вам, Всего наилучшего.

1 голос
/ 04 мая 2011

Добавьте это 'application / pdf' к вашему : content_type , чтобы оно стало : content_type => ['image / jpeg', 'image / png', 'изображение / GIF', 'приложение / PDF'] . Это должно исправить это, и если вы хотите, чтобы это открылось в приложении, то также добавьте 'application / octet-stream' и для MSword / spreadsheet , добавьте 'application / msword «.

...