|
|
|
| Здравствуйте!
Нашёл на этом сайте форму закачки - вроде бы всё логично и понятно. Наверное, многие её видели. Но там одна загвоздка - надо чтобы файл скопировался туда, куда мне надо.
Что я только не подставлял - PHP мне пишет, что нет такой директории!
Сервер реальный.
Скрипт такой:
<html>
<head>
<title>Результат загрузки файла</title>
</head>
<body>
<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],
"317/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
} else {
echo("Ошибка загрузки файла");
}
?>
</body>
</html>
а форма такая:
<?php
echo '<html>
<head>
<title>Загрузка файлов на сервер</title>
</head>
<body>
<h2><p><b> Форма для загрузки файлов </b></p></h2>
<form action="uploading.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
</body>
</html>';
?>
Мне нужно, чтобы файл копировался в папку "317", а php её не находит и пишет:
Warning: copy(317/for_sunrise_white.jpg): failed to open stream: No such file or directory in /www/lun/www/htdocs/baz/317/uploading.php on line 13 | |
|
|
|
|
|
|
|
для: petter
(24.01.2009 в 23:12)
| | Вообше то скрипт рабочий. Только стоит все таки сменить эту строчку
<?
if(copy($_FILES["filename"]["tmp_name"],
|
на эту
<?
if(move_uploaded_file($_FILES["filename"]["tmp_name"],
| А каталог 317 точно существует? | |
|
|
|
|
|
|
|
для: Николай2357
(25.01.2009 в 01:32)
| | Спасибо, я заменил, хотя результат тот же... | |
|
|
|
|
|
|
|
для: petter
(24.01.2009 в 23:12)
| | ну правильно.
нет каталога 317/ в каталоге /www/lun/www/htdocs/baz/317/ | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2009 в 01:38)
| | Trianon, как же нет такого каталога? А что тогда есть?
я писал и /www/lun/www/htdocs/baz/317/ и тоже ошибку выдаёт что нет такой директории...
Непонятно, что писать в качестве "пункта назначения", то есть того места, куда надо на сайте вставить этот файл. Писал я и полный URL, и тоже ошибка. Неужели никто не делал подобную штуковину? | |
|
|
|
|
|
|
|
для: Petter
(25.01.2009 в 10:58)
| | Делали такую штуковину, ну коли говорит что нет каталога, значит нет. | |
|
|
|
|
|
|
|
для: Petter
(25.01.2009 в 10:58)
| | >Trianon, как же нет такого каталога? А что тогда есть?
Файл uploading.php точно есть. Может еще какие файлы имеются.
>Непонятно, что писать в качестве "пункта назначения", то есть того места, куда надо на сайте вставить этот файл.
Кому писать? Функции файловой системы о сайте вообще ничего не знают. Они работают с каталоговой структурой сервера, а не сайта.
Перед тем, как говорить, что ничего не получается, имеет смысл вывести второй аргумент функции с помощью echo, и поглядеть, куда Вы бедный файл пытаетесь записать.
>я писал и /www/lun/www/htdocs/baz/317/ и тоже ошибку выдаёт что нет такой директории...
А вот это странно. Не то, что не пишет, а то, что ошибку ту же самую выдает. | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2009 в 11:38)
| | Когда я пишу в этой 13-й строчке, в пункте назначения
"/www/lun/www/htdocs/baz/317/".$_FILES["filename"]["name"]))
|
то нет проблем, файл загружается. Однако я не понимаю, почему. Я эту строчку взял наугад, просто скопировав её из сообщения об ошибке. Когда php мне писал, что нет такой директории в /www/lun/www/htdocs/baz/317/, то я и наугад и вставил в пункт назначения (destination) этот код:
"/www/lun/www/htdocs/baz/317/".$_FILES["filename"]["name"]))
|
Теперь файл загружается, но код, наверное, неграмотный? Наверное, надо как-то через переменные окружения его писать? | |
|
|
|
|
|
|
|
для: Petter
(25.01.2009 в 12:12)
| |
dirname($_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']).'/'.$_FILES["filename"]["name"]
|
только загружать файлы в каталог со скриптами - потенциальная дыра.
Тем более - давать им клиентское имя. | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2009 в 12:18)
| | Спасибо, Trianon.
Получилась destination из переменных окружения. Спасибо огромное!
Да, понимаю, что для закачиваемых файлов лучше отдельную папку upload завести...
А вот насчёт имён новых, не клиентских - очень интересная мысль, тем более что мне надо будет их как-то с кодом страницы связывать... Но это уже другая тема... Ещё раз спасибо за грамотную destination! | |
|
|
|