Конвертировать загруженные файлы в определенный формат файла, который не может загрузить - PullRequest
2 голосов
/ 04 марта 2010

У меня проблема с загрузкой и сохранением загруженных файлов.

Мои пользователи могут загружать файлы нескольких типов, такие как doc, pdf, ppt и т. Д.

Этот тип файлов легко загружается, если у любого есть URL.

Итак, что является лучшим способом предотвратить загрузку файла.

Или я конвертирую загруженные файлы в какой-то определенный формат, который не может быть легко загружен (например, flash) ..

Я работаю на php и mysql.

Спасибо
Авинаш

Ответы [ 3 ]

2 голосов
/ 04 марта 2010

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

1 голос
/ 04 марта 2010

Загрузить файлы за пределы корневого каталога вашего документа. Например:

/var/username/uploads/file.docx

где корень вашего документа

/var/username/public_html/index.php

Так что к ним нельзя получить доступ напрямую. И затем, если вы хотите разрешить загрузку, создайте файл PHP с именем «download.php», который выполняет что-то похожее на:

$data  = file_get_contents('/var/username/uploads/file.docx');
header('Content-Type: application/docx');
header('Content-Length: '.strlen($data));
header('X-Content-Type-Options: nosniff');
echo $data;

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

0 голосов
/ 04 марта 2010

Решением может быть установка пользователя и пароля для папки загрузки, так что только пользователи, которые знают подробности аутентификации, могут загружать файлы. Проверьте следующую ссылку, чтобы узнать, как создавать файлы htpasswd в папках вашего сервера:


http://httpd.apache.org/docs/1.3/programs/htpasswd.html


...