|
|
|
| Добрый день!
Нужно получать от клиентов их логотипы.
<form action='logo.php' method='post' enctype='multipart/form-data'>
Загрузить логотип<br>
<input type='file' class='text' name='logo' size='30' />
<br><br>
<input type='submit' class='button' value='Загрузить' />
<input type='hidden' name='task' value='upload' />
<input type='hidden' name='MAX_FILE_SIZE' value='5000000' />
</form>
|
Как должен выглядеть обработчик logo.php? | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 22:38)
| | Возможно вас заинтересует скрипт по ссылке http://softtime.ru/scripts/upload.php. | |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 22:40)
| | еще как. Спасибо | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 22:42)
| | файл upload. php
17 строка
move_uploaded_file($_FILES["filename"]["tmp_name"], "/path/to/file/".$_FILES["filename"]["name"]);
|
С чем это едят? Что прописатьвместо: filename, tmp_name, path/to/file/".$_FILES["filename"]["name"]);
Лучше приведите, пожайлуста, пример записи | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 22:49)
| | Вместо "filename" у вас везде будет "logo", "tmp_name" остается без изменений, а "/path/to/file/" - это папка куда вы будете складывать загруженные изображения. Путь не обязательно должен быть абсолютным, можно воспользоваться относительным. | |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 22:55)
| | а "/path/to/file/" - это папка куда вы будете складывать загруженные изображения. Путь не обязательно должен быть абсолютным, можно воспользоваться относительным
эта папка должна на компьютере или на сервере?
могу ли я хранить логотипы в папке logo на сервере? если да, то как прописать к нему путь?
Будет ли верна вот такая запись www.mysite.ru/logo ? | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 23:02)
| | Ну вы же грузите на сервер, значит храниться будет на сервере. www.mysite.ru нельзя, нужен путь в файловой системе
если DOCUMENT_ROOT определен, то можно взять такой путь
$_SERVER['DOCUMENT_ROOT'].'/'.$_FILES["filename"]["name"];
|
тогда будет в корень сайта кидать, но лучше для всего этого дела сделать папку, например upload и путь указать
$_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["filename"]["name"]
|
| |
|
|
|
|
|
|
|
для: speedsoft
(29.12.2011 в 23:15)
| | создал папку upload
вот так записал.
move_uploaded_file($_FILES["filename"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["logo"]["name"]);
|
Дает ошибку:
Warning: move_uploaded_file(.../upload/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home./..../upload.php on line 17
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpHUGXAU' to '/home/.....l/upload.php on line 17
поменял
move_uploaded_file($_FILES["filename"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["logo"]["name"]);
|
на
move_uploaded_file($_FILES["logo"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["logo"]["name"]);
|
ошибок нет и логотипа нет. папка upload пуста | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 23:25)
| | Права доступа на папку /upload/ какие? Поставьте 0777. | |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 23:35)
| | права поставил 777
все равно пусто | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 23:38)
| | Тогда нужно сделать проверки, как советует speedsoft ниже | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 23:25)
| | сделайте
и
echo $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["logo"]["name"];
|
и покажите что он выдаст | |
|
|
|
|
|
|
|
для: speedsoft
(29.12.2011 в 23:36)
| | выдало
/home/siten/public_html/upload/
а насчет var_dump($_FILES) не понял куда записать | |
|
|
|
|
|
|
|
для: Василий
(29.12.2011 в 23:43)
| | Можно после предыдущей записи
| |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 23:47)
| | /home/siten/public_html/upload/array(1) { ["filename"]=> array(5) { ["name"]=> string(15) "6.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpx6hyK8" ["error"]=> int(0) ["size"]=> int(230180) } } | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 00:25)
| | поидее вот так тогда
move_uploaded_file($_FILES["filename"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["filename"]["name"]);
|
| |
|
|
|
|
|
|
|
для: speedsoft
(30.12.2011 в 00:45)
| | без изменений. папка пустая
если перезагрузить upload.php
то выдает ошибку
Ошибка загрузки файла/home/siten/public_html/upload/array(0) { }
|
| |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 00:51)
| | Если права позволяют, и Вы нас не обманываете =))) то должно.
давайте еще раз проверим что нам пришло
echo "temp file: ",$_FILES["filename"]["tmp_name"], "<br>";
echo "new file: ", $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["filename"]["name"];
|
покажет что сформировалось. может где-то что-то не подставляется. | |
|
|
|
|
|
|
|
для: speedsoft
(30.12.2011 в 01:05)
| | вот что выводится
/home/siten/public_html/upload/array(1) { ["filename"]=> array(5) { ["name"]=> string(15) "6.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/php2b2Bvc" ["error"]=> int(0) ["size"]=> int(230180) } } temp file: /tmp/php2b2Bvc
new file: /home/siten/public_html/upload/6.jpg
|
на папке upload есть зеленый крестик. но тем не менее пустая папка | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 01:32)
| | ну вроде все верно. запустите phpinfo и поглядите, случайно парметр safe_mode не стоит в ON ?
чтобы запустить phpinfo сделайте отдельно файл со след.кодом
| |
|
|
|
|
|
|
|
для: speedsoft
(30.12.2011 в 03:32)
| | поверил
safe_mode Off Off | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 08:46)
| | выложите архив с файлами, погляжу у себя. | |
|
|
|
|
|
|
|
для: speedsoft
(30.12.2011 в 09:09)
| | А ТУТ только два файла
example.php
<html>
<head>
<title>Загрузка файлов на сервер</title>
</head>
<body>
<h2><p><b> Форма для загрузки файлов </b></p></h2>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
</body>
</html>
|
upload.php
<html>
<head>
<title>Результат загрузки файла</title>
</head>
<body>
<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную
move_uploaded_file($_FILES["filename"]["tmp_name"],
$_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["filename"]["name"]);
} else {
echo("Ошибка загрузки файла");
}
echo $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["logo"]["name"];
var_dump($_FILES);
echo "temp file: ",$_FILES["filename"]["tmp_name"], "<br>";
echo "new file: ", $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["filename"]["name"];
?>
<?
phpinfo();
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 13:55)
| | Что-то не работает ваш скрипт | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 15:45)
| | То-то и оно что работает. Ваш скопировал 1 в 1 и все загрузилось.
попробуйте move_upload_file заменить на простой copy() | |
|
|
|
|
|
|
|
для: speedsoft
(30.12.2011 в 17:41)
| | поменял на
copy($_FILES["filename"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["filename"]["name"]);
} else {
echo("Ошибка загрузки файла");
}
|
Все равно "Ошибка загрузки файла.
Может все-таки $_FILES["filename"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES["filename"]["name"]); не так прописан? | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 18:50)
| | Если у вас выводится "Ошибка загрузки файла", то судя по всем у вас функция is_uploaded_file() почему-то возвращает false, хотя файл $_FILES["filename"]["tmp_name"] явно существует, что видно из дампа. Попробуйте тогда вообще проверку is_uploaded_file() убрать. | |
|
|
|
|
|
|
|
для: cheops
(30.12.2011 в 18:56)
| | убра проверку.
Файла в папке upload по-прежнему нет. или не видно, потому что зеленый крестик на папке той | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 19:22)
| | >зеленый крестик на папке той
Что за зеленый крестик?
PS Вы на сервере тестируете или на локальной машине? Лучше для начала локально отладить скрипт - подводных камней меньше, а методов контроля больше. | |
|
|
|
|
|
|
|
для: cheops
(30.12.2011 в 19:37)
| | тестирую на сервере.
та папка имеет зеленый крестик, помещеный сверху на папке.. | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 19:51)
| | >та папка имеет зеленый крестик, помещеный сверху на папке..
Что это означает на вашем хосте и в вашей системе управления хостом? | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 19:51)
| | А что за хостер и тариф и если можно, дайте ссылку на phpinfo(), может там что на мыли наведет. т.к. cheops прав, is_upload_file должна вернуть тру, ведь дамп показывает что файл передался. Может что-то в конфигурации сервера косяк, хотя мало вероятно. | |
|
|
|
|
|
|
|
для: speedsoft
(30.12.2011 в 21:07)
| | вот здесь хостинг http://yutex.ru/optim.php
написал им. сейчас проверят | |
|
|
|
|
|
|
|
для: Василий
(30.12.2011 в 21:36)
| | файлы грузятся, но они отображаются в папке upload при перезагрузке сервера. косяк | |
|
|
|