Вопрос

Я ищу способ загрузить файл XML. Я использую:

file_path = 'folder/' + xml_name + '.xml'
send_file file_path, :type => "text/xml"

Но это всегда загружает меня пустой файл. Сам файл имеет 16 КБ данных в нем ...

это почему?

Maechi.

Это было полезно?

Решение 2

Проблема сохранена, но я не знаю почему

File.open(file_path, 'r') do |f|
  send_data f.read, :type => "text/xml", :filename => "10.xml"
end

send_data работает ... но send_file не!

Другие советы

вероятно, вы должны прокомментировать

config.action_dispatch.x_sendfile_header = "X-Sendfile"

в производстве .rb.

видеть http://vijaydev.wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/ для объяснений

Как говорит Евгений в своем ответе, в добычи добычи Enviroment Rails позволят Apache или Nginx отправлять фактический файл для вас с X-SendFile, если вы не используете ни один из них, как инфраструктуру для рельсов, вы должны прокомментировать в

Конфигурация / среда / production.rb Файл.

# config.action_dispatch.x_sendfile_header = "X-Sendfile"

Вы должны включить использование SendFile в ./config/environments/production.rb:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

Если эта строка нет (или не прокомментирована), то рельсы будут правильно отправлять файл, но не через Apache.

Если вы получаете 0-байтовые файлы, пожалуйста, убедитесь, что вы установили mod_xsendfile, который доступен от https://tn123.org/mod_xsendfile.

Загрузите один исходный файл (mod_xsendfile.c) и скомпилировать это (apxs -cia mod_xsendfile.c). Вы, вероятно, хотите запустить apxs как корень, так что он все будет настроить правильно.

Тогда вы собираетесь захотеть установить XSendFile и XSendFilePath Варианты в файлах конфигурации Apache. Смотрите помощь в вышеупомянутом URL для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top