Как безопасно загружать и хранить пользовательские документы? - PullRequest
0 голосов
/ 18 марта 2011

КАК разрешить пользователям загружать на наши серверы файлы, которые затем можно безопасно хранить и к которым могут обращаться пользователи, которые их загрузили?

Где их хранить в базах данных?или в папках на сайте?А если я использую папки?как я могу позволить людям, которые владеют ими, видеть это, а не кого-либо еще?

Я новичок в области хранения, поэтому, пожалуйста, не обращайте внимания на любые глупые вопросы.

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Файлы - это файлы, а не текстовые данные, которые вам нужно искать или использовать в базе данных агрегатные функции.Файловая система операционной системы была написана специально для быстрой обработки и поиска файлов.Поэтому я бы не помещал их в базу данных, но в файловую систему.

Чтобы обезопасить их, вы можете поместить их в папку с файлом .htaccess, запрещающим доступ, или поместить их вне document_root.Затем вы пишете простой PHP-скрипт для отправки файлов обратно пользователю, если у них есть разрешение на его просмотр.

0 голосов
/ 18 марта 2011

Файлы, загруженные с помощью <input type='file' />, поступают в целевой PHP-скрипт в суперглобальном массиве $_FILES. ( Документация )

Часто лучше хранить их в двоичном столбце BLOB в базе данных, где вы можете легко связать их с идентификатором пользователя, защищая их от загрузки неавторизованными пользователями. Они часто хранятся вместе со столбцами, содержащими тип MIME и размер файла в байтах.

Чтобы доставить файлы обратно пользователю в браузере, вы можете отправить соответствующий заголовок типа контента из PHP:

// the mimetype
header("Content-type: application/whatever");
header("Content-length: $length-in-bytes");

// echo the file out to the browser
echo $file;
exit();
...