настройка расположения содержимого для документов с использованием скрепки - PullRequest
3 голосов
/ 06 декабря 2011

Я пытаюсь добавить Content-Disposition к моим файлам docx в s3. Что-то вроде: Content-Disposition: attachment; filename="filename.docx". Я хочу сделать это, потому что IE (<9) загружает файлы docx в виде zip-файлов. После некоторого поиска в Google я нашел, что есть обходной путь, добавив <code>content-disposition к контенту. Я попытался перезвонить before_post_process и сделал

before_post_process :set_content_disposition

def set_content_disposition
  filename = self.attachment.instance.attachment_file_name
  self.attachment.instance_write(:content_disposition, "attachment; filename="+filename) 
end

Но он все равно загружается в виде zip-файла. Есть ли способ правильно сделать это.

Ответы [ 4 ]

9 голосов
/ 25 февраля 2012

Ответ Прозака (используя before_post_process для редактирования опций) у меня не сработал.Однако, в любом случае, теперь есть более простой метод.Вы можете передать процедуру напрямую ключу: s3_headers в хэше опций вашего вызова has_attached_file:

has_attached_file :attachment, {
  ...,
  :s3_headers => lambda { |attachment|
    # pass whatever you want in place of "attachment.name"
    { "Content-Disposition" => "attachment; filename=\"#{attachment.name}\"" }
  },
  ...
}
3 голосов
/ 07 декабря 2011

Я наконец нашел способ ... есть обратный вызов before_post_process с гемом paperclip.

мы можем сделать что-то вроде этого ..

has_attached_file :sample
before_post_process :set_content_dispositon

def set_content_dispositon
  self.sample.options.merge({:s3_headers => {"Content-Disposition" => "attachment; filename="+self.sample_file_name}})
end
0 голосов
/ 06 декабря 2011

Prozac,

Я думаю, что в Paperclip вы должны установить хеш s3_header ['Content-Disposition'], но я в той же проблеме, учитывая, что хеш s3_header не интерполирован, я до сих пор не могу понятькак поместить туда имя файла без патча Скрепка

проверить это решение http://groups.google.com/group/paperclip-plugin/browse_thread/thread/bff66a0672a3159b

0 голосов
/ 06 декабря 2011

Я не могу помочь вам с скрепкой, но правильный MIME Тип / Тип содержимого для docx файлов: application/vnd.openxmlformats-officedocument.wordprocessingml.document.

Использование этого остановит IE для загрузки их в виде zip-файлов.

Вот все типы MIME для новых офисных форматов.

Extension   MIME Type
.xlsx   application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx   application/vnd.openxmlformats-officedocument.spreadsheetml.template
.potx   application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx   application/vnd.openxmlformats-officedocument.presentationml.slideshow
.pptx   application/vnd.openxmlformats-officedocument.presentationml.presentation
.sldx   application/vnd.openxmlformats-officedocument.presentationml.slide
.docx   application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx   application/vnd.openxmlformats-officedocument.wordprocessingml.template
.xlam   application/vnd.ms-excel.addin.macroEnabled.12
.xlsb   application/vnd.ms-excel.sheet.binary.macroEnabled.12
...