настройка содержимого для docx с помощью paperclip

63
4

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

спросил(а) 2021-01-25T14:56:57+03:00 5 месяцев назад
1
Решение
133

Ответ Prozac (с использованием before_post_process для редактирования параметров) не работал для меня. Тем не менее, теперь есть более простой способ. Вы можете передать proc непосредственно в ключ: 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}\"" }
},
...
}

ответил(а) 2021-01-25T14:56:57+03:00 5 месяцев назад
63

Я, наконец, нашел способ.. есть обратный вызов 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

ответил(а) 2021-01-25T14:56:57+03:00 5 месяцев назад
45

Я не могу помочь вам с paperclip, но правильный тип MIME Type/Content Type для файлов 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

ответил(а) 2021-01-25T14:56:57+03:00 5 месяцев назад
45

Прозак,

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

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

ответил(а) 2021-01-25T14:56:57+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема