Forum Webscript.Ru

Программирование => PHP => Тема начата: Wolf от 12 Мая 2003, 14:37:01

Название: Загрузка файла на сервер...?
Отправлено: 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);
?>
Название: Загрузка файла на сервер...?
Отправлено: FreeSpace от 12 Мая 2003, 15:31:40
Размести эту директорию не в каталоге веб-документов и всё будет ОК. Или можешь .htaccess соответствующий поставить. А если ты такой же извращенец, как я, и файлы у тебя небольшие, то можешь вообще в базу данных их сохранять :D
Название: Загрузка файла на сервер...?
Отправлено: Wolf от 12 Мая 2003, 20:41:29
А может кто подсказать какие необходимые опции нужно изменить(добавить), чтобы закрыть дирректорию?
Название: Загрузка файла на сервер...?
Отправлено: FreeSpace от 12 Мая 2003, 20:42:58
В .htaccess прописать deny from all
Название: Загрузка файла на сервер...?
Отправлено: Wolf от 13 Мая 2003, 11:40:36
Спасибо, хорошо, даже отлично закрывает, но и мой скрипт не может получить доступ к файлам в дирректории (доступ должен быть только для него)...:(
Название: Загрузка файла на сервер...?
Отправлено: Макс от 13 Мая 2003, 17:54:17
Нужно не header("Location: /dir/file.zip") делать а что-то вроде
readfile(\'/dir/file.zip\');
Название: Загрузка файла на сервер...?
Отправлено: Wolf от 14 Мая 2003, 09:46:28
Незнаю, но при
Цитировать
header("Location: /dir/file.zip")
идет сохранение на комп (что мне и нужно), а при
Цитировать
readfile(\'/dir/file.zip\')
- выводит текст в окно браузера.

Как я понял - мне нужно настройки в .htaccess прописать (deny from all закрывает доступ к дирректории полностью), а нужно, чтобы с сайта к файлам можно было получить доступ (чтение и запись через сценарий)...



[OFF]Этот вопрос скорее всего следует задать в разделе серверов.[/OFF]
Название: Загрузка файла на сервер...?
Отправлено: Макс от 14 Мая 2003, 15:04:15
denny from all запрещает доступ к каталогу средствами веб-сервера, то есть по HTTP в этот каталог попасть нельзя, соответственно использовать просто редирект  (Location: /path/to/file.zip) нельзя.

Нужно php-скриптом считать файл и выдать его.
Если readfile() выводит содержимое файла, то скорее всего неправильные заголовки шлешь
Название: Загрузка файла на сервер...?
Отправлено: FreeSpace от 14 Мая 2003, 15:37:44
Попробуй так:

$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]