Файл поддержки устройства iOS 12.0.1 (16A404) [на удержании]

Обновление после комментариев

Поскольку вы хотите локально обслуживать файлы, просто поместите их за пределы / public / folder и вне любого из / активов / папок и вы должны быть хорошими. Вы можете узнать больше об общих папках и папках активов здесь: Раздел 2 Как использовать конвейер активов Предположим:

/private/

Я верю Раздел 11 send_file , также используемый в вопросе SO, связанный в моем первоначальном ответе ниже, по-прежнему является способом предоставления доступа к файлам через контроллер, а не статически. Адаптировано из документов:

send_file("#{Rails.root}/private/#{filename}",
          :filename => "#{filename}",
          :type => "application/pdf", #for example if pdf
          :disposition => 'inline') #send inline instead of attachment

Оригинальный ответ для удаленной службы вместе с send_file ниже

Относительно 1) файлов, приватных для приложения. Вы можете заблокировать эти частные файлы в такой системе, как Amazon S3, которая предоставляет авторизованный доступ, поскольку Callmeed объясняет в этот вопрос SO . Тогда только ваше приложение сможет разрешить доступ к файлу.

Относительно 2), также доступный для администраторов

Проблема с использованием только части 1) заключается в том, что он разблокирует файлы для ограниченный период времени, в течение которого я предполагаю, что они общедоступны. Поэтому, если вы хотите обойти это, я думаю, вам нужно принять решение от Павла Шведа в том же самом вопросе SO.

В этом решении файлы предоставляются через маршрут / контроллер, который обеспечивает двоичные данные файла, а не URL-адрес, указывающий на файл.

Комбинированное решение

Прочитайте файл с S3 только с вашим приложением, разрешенным для этого доступа (не открывая его публично). Затем передайте данные непосредственно через контроллер, который может разрешить кому угодно.

Предостережения

  • Предоставление двоичных данных непосредственно с контроллера похоже на то, что это убьет производительность приложения, если это часто используется, но я никогда не пробовал.
  • Если вы можете найти более простой способ сделать часть 1), часть 2), все равно будет работать с этим решением

34
задан NITESH 15 October 2018 в 06:35
поделиться