Forum Webscript.Ru
Программирование => PHP => Тема начата: Wolf от 12 Мая 2003, 14:37:01
-
Как можно сделать upload файла в "закрытую" дирректорию. Просто загрузку файла я сделал, но нужно, чтобы дирректория была более защищена, т.к. из нее в последствии будет скачиваться архив через сценарий (только после прохождения пользователем аутентификаци):
$name="primer.zip";
header("Content-Type: application/force-download\\r\\n");
header("Content-Transfer-Encoding: binary\\r\\n");
header("Content-Length: ".filesize($name));
header("Content-Disposition: attachment; filename=$name\\r\\n");
header("Location: ".$name);
?>
-
Размести эту директорию не в каталоге веб-документов и всё будет ОК. Или можешь .htaccess соответствующий поставить. А если ты такой же извращенец, как я, и файлы у тебя небольшие, то можешь вообще в базу данных их сохранять :D
-
А может кто подсказать какие необходимые опции нужно изменить(добавить), чтобы закрыть дирректорию?
-
В .htaccess прописать
deny from all
-
Спасибо, хорошо, даже отлично закрывает, но и мой скрипт не может получить доступ к файлам в дирректории (доступ должен быть только для него)...:(
-
Нужно не header("Location: /dir/file.zip") делать а что-то вроде
readfile(\'/dir/file.zip\');
-
Незнаю, но при
header("Location: /dir/file.zip")
идет сохранение на комп (что мне и нужно), а при readfile(\'/dir/file.zip\')
- выводит текст в окно браузера.
Как я понял - мне нужно настройки в .htaccess прописать (deny from all закрывает доступ к дирректории полностью), а нужно, чтобы с сайта к файлам можно было получить доступ (чтение и запись через сценарий)...
[OFF]Этот вопрос скорее всего следует задать в разделе серверов.[/OFF]
-
denny from all запрещает доступ к каталогу средствами веб-сервера, то есть по HTTP в этот каталог попасть нельзя, соответственно использовать просто редирект (Location: /path/to/file.zip) нельзя.
Нужно php-скриптом считать файл и выдать его.
Если readfile() выводит содержимое файла, то скорее всего неправильные заголовки шлешь
-
Попробуй так:
$name="primer.zip";
header("Content-Type: application/octet-stream");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($name));
header("Content-Disposition: attachment; filename=$name");
readfile($name);
[off]"\\r\\n" в функции header() ставить необязательно[/off]