Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с загрузкой файла из формы
 
 автор: Artlight   (25.10.2005 в 16:31)   письмо автору
 
 

Пытаюсь загрузить картинку из формы - ничего не получается.
Мне кажется проблема в пути к записываемому файлу...

Текст :
<?



//добавление картинки на сервер
if(!@$b1)
{
//если кнопка b1 не была нажата - выводим форму добавления картинки
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">

</head>

<form action="<?=$SCRIPT_NAME?>" method=POST enctype=multipart/form-data>


Выкладываем на сервер файлы картинок в формате JPEG<br>
Маленькая картинка:
<input type=file name="img1"><br>

<input type="submit" value=",.. и добавить." name="b1">
<input type="reset" value="Reset" name="B2">
</form>
<br>

<?
}
else
{


$x=$_FILES['img1']['name'];
echo "Имя файла (введенного) $x";

$path = './objects/admin/image.jpg';
move_uploaded_file($_FILES['img1']['tmp_name'],$path) or die ("не
записано");

echo "Записано";
}
?>

Сам он лежит на: http://www.artlight.ru/objects/admin/file1.php

Посоветуйте, как правильно сделать.

   
 
 автор: multiBrain   (25.10.2005 в 17:11)   письмо автору
 
   для: Artlight   (25.10.2005 в 16:31)
 

А что именно-то не получается? Как себя ведет скрипт?

   
 
 автор: Artlight   (25.10.2005 в 17:48)   письмо автору
 
   для: multiBrain   (25.10.2005 в 17:11)
 

Если в форме выбрать картинку и нажать "отправить", то ругается следующим образом:

Имя файла (введенного) 41972.jpg
Warning: move_uploaded_file(./objects/admin/image.jpg): failed to open stream: No such file or directory in /opt/xtraff2/ftp_users/ftp112/htdocs/objects/admin/file1.php on line 38

Warning: move_uploaded_file(): Unable to move '/xtraff/ftp_users/ftp112/temp/phpzLOLkN' to './objects/admin/image.jpg' in /opt/xtraff2/ftp_users/ftp112/htdocs/objects/admin/file1.php on line 38
не записано

   
 
 автор: DDK   (25.10.2005 в 18:22)   письмо автору
 
   для: Artlight   (25.10.2005 в 16:31)
 

Вообще, ваш скрипт никуда не годится, если честно :) Делается это всё немного подругому. Главный ваш недочёт - Вы не учли тот момент, что юзеры могут закачать файл с одним и тем же именем, что приведёт к ошибке (т.к. на сервере такой уже существует).

   
 
 автор: multiBrain   (25.10.2005 в 18:26)   письмо автору
 
   для: DDK   (25.10.2005 в 18:22)
 

А на каком уровне (каталога) исполняется скрип. Т.е. там где лежит (file1.php) или он гдн-то инклудится. Если там где лежит (objects/admin/fil1.php) и картинка туда же, может поробовать в $path записывать image.jpg без (./objects/admin/) (кстати что эта за точка стотит в начале ./objects/).

   
 
 автор: Artlight   (25.10.2005 в 19:16)   письмо автору
 
   для: multiBrain   (25.10.2005 в 18:26)
 

1.Скрипт исполняется там где лежит
2.Картинку хотелось бы записать в objects/img/ но пока вообще никуда не получается
3. Под Денвером у меня работает такой вариант:

В форме:
<input type=file name="img1">
В скрипте:
$path="../img/image.jpeg";
copy($img1, $path);

Всё записывается, но на сервере это не заработало. Хостер вчера ответил:
Оно и не должно так работать. Правильнее сделать вот так:

$path - это полный путь файла, например
$path = './files/image.jpg';
move_uploaded_file($_FILES['img1']['tmp_name'],$path);



4.точка в начале ./objects/ из ответа хостера, но если её убрать, тоже ничего не получается
5.Скрипт на objects/admin/fil1.php - отладочный, чтобы понять, как записывать файлы.
Два дня уже с этим мучаюсь, скоро помру.

   
 
 автор: multiBrain   (25.10.2005 в 19:28)   письмо автору
 
   для: Artlight   (25.10.2005 в 19:16)
 

Вот только вчера тоже самое делал, вот такой код

<?
if(is_uploaded_file($_FILES['img']['tmp_name']))
{
echo
'Pic uploaded.<br>';
$_pic=move_uploaded_file($_FILES['img']['tmp_name'],'../catalog/pics/'.$_type.'_'.$_row['new_id'].'.jpg');
if(
$_pic)echo'Pic move_uploaded_file.';
}
?>

отлично работает.
А на локаохосте -то хотя бы работает?

   
 
 автор: Artlight   (25.10.2005 в 19:59)   письмо автору
 
   для: multiBrain   (25.10.2005 в 19:28)
 

>А на локаохосте -то хотя бы работает?

Под Денвером на моём компютере работает и так:
$path='../img/image2.jpg';
и так:
$path='image2.jpg';

на сервере заработало так: $path='image2.jpg';


P.S.
Хостер ответил.
Оказывается на каталогг, в который пишутся файлы надо ставить 777
(раньше говорил, что 755)
Он сам исправил, поэтому и $path='image2.jpg'; на сервере заработало.

сам поправил /objects/img/ на 777 - заработало $path='../img/image2.jpg';

Возник вопрос:
Хостер поставил в моем скрипте: $path='./image2.jpg'; (перед чертой точка) - работает
но у меня работает и $path='image2.jpg';
Пишется в обоих случаях в тот-же каталог, где находится скрипт
Это что - синонимы?
Ответьте пожалуйста, а то у хостера не хочется спрашивать.

   
 
 автор: cheops   (26.10.2005 в 19:24)   письмо автору
 
   для: Artlight   (25.10.2005 в 19:59)
 

Да, это синонимы.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования