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

Форум PHP

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

 

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

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

тема: Загрузка файлов
 
 автор: em   (22.06.2006 в 11:56)   письмо автору
 
 

Вставка пользователем своих изображений. Не получается загружать в БД через ссылки.

   
 
 автор: kolobokk   (22.06.2006 в 12:09)   письмо автору
 
   для: em   (22.06.2006 в 11:56)
 

а по подробней нельзя?
что не получается?

   
 
 автор: WebTech   (22.06.2006 в 12:13)   письмо автору
 
   для: em   (22.06.2006 в 11:56)
 

Не получается загружать в БД что? И как это - "через ссылки"? Объясните попонятнее...

   
 
 автор: em   (22.06.2006 в 12:43)   письмо автору
 
   для: WebTech   (22.06.2006 в 12:13)
 


<?php
//Подсоединение к базе данных
if(isset($_FILES['userfile']['name']))
            {
               
$dst="/var/www/tehob/tmp/".$_FILES['userfile']['name'];
                 
copy($_FILES['userfile']['tmp_name'],$dst);
                            
$q="INSERT INTO'images'VALUES ('".$_FILES['userfile']['name']."')";
                 
$result=mysql_query($q);
                                      }
$q="SELECT *FROM'images'";
$rez1=mysql_query($q);
 while(
$s1=mysql_fetch_array($rez1))

echo 
"<img src='/var/www/tehob/tmp/".$s1["image"]."' />";
}

?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>"  enctype='multipart/form-data' method='POST'>
<input type='file' name='userfile' />
<input type='submit' value='ok' /> 
</form>

]

   
 
 автор: WebTech   (22.06.2006 в 13:25)   письмо автору
 
   для: em   (22.06.2006 в 12:43)
 

Вы храните имена загружаемых файлов БД?
Ваш скрипт вполне рабочий. Что конкретно у вас не работает?

Или вы хотите хранить в БД само изображение?

   
 
 автор: em   (22.06.2006 в 13:30)   письмо автору
 
   для: WebTech   (22.06.2006 в 13:25)
 

Нет, изображения я хранить не хочу. У меня картинки не выводятся, хотя в БД они заносятся.

   
 
 автор: WebTech   (22.06.2006 в 13:35)   письмо автору
 
   для: em   (22.06.2006 в 13:30)
 

Т.е. имена файлов? См. сообщение Trianon'a. После загрузки файла, ему надо давать имя, под которым он будет храниться на сервере. Имя файла с клиентской машины не подойдет.

   
 
 автор: em   (22.06.2006 в 13:36)   письмо автору
 
   для: WebTech   (22.06.2006 в 13:35)
 

Честно говоря, я не знаю, как это делается.

   
 
 автор: Trianon   (22.06.2006 в 13:41)   письмо автору
 
   для: em   (22.06.2006 в 13:36)
 

Вы добавляете строку в БД? У нее есть первичный ключ (обычно это порядковый номер строки) ?
Вот и файл делайте с именем, равным этому ключу (номеру).

Если у Вас нет первичного ключа в таблице, лучше создайте. Без него всё равно замучаетесь.

   
 
 автор: em   (22.06.2006 в 13:46)   письмо автору
 
   для: Trianon   (22.06.2006 в 13:41)
 

Не получается. Предположим, у меня есть первичный ключ id_ac. Как должен измениться мой код?

   
 
 автор: kolobokk   (22.06.2006 в 14:21)   письмо автору
 
   для: em   (22.06.2006 в 13:46)
 

<?php 
//Подсоединение к базе данных 
if(isset($_FILES['userfile']['name'])) 
            { 
                 
$q="INSERT INTO'images' (image) VALUES ('temp')"
                 
$result=mysql_query($q); 
$id=mysql_insert_id();
// вытаскиваем расширение загружаемого файла
$ext strrchr($_FILES['userfile']['name'], "."); 

               
$dst="/var/www/tehob/tmp/".$id.$ext;
                 
copy($_FILES['userfile']['tmp_name'],$dst); 
$sql "update  images set image = '$dst' where id_ac  = $id";
$result mysql_query($sql);
                                         } 
$q="SELECT *FROM'images'"
$rez1=mysql_query($q); 
while(
$s1=mysql_fetch_array($rez1)) 

echo 
"<img src='$s1["image"]."' />"; 


?> 
<form action="<?php echo $_SERVER['
PHP_SELF'];?>"  enctype='multipart/form-data' method='POST'> 
<input type='
file' name='userfile' /> 
<input type='
submit' value='ok' /> 
</form>

   
 
 автор: em   (22.06.2006 в 15:35)   письмо автору
 
   для: kolobokk   (22.06.2006 в 14:21)
 

Ничего не выходит. В базу данных записывается в поле 'image' ./var/www/tehob/(id).jpg, но картинки не выводит

   
 
 автор: kolobokk   (22.06.2006 в 16:02)   письмо автору
 
   для: em   (22.06.2006 в 15:35)
 

проверьте пути к директории картинок
и кстати совсем не обязательно указывать путь от корня сервера - проще писать пути от корневой директории сайта, т.е. не ./var/www/tehob/5.jpg , а tehob/5.jpg
в таком случае

echo "<img src='$s1["image"]."' />"; 

просто обязан работать

   
 
 автор: em   (22.06.2006 в 16:12)   письмо автору
 
   для: kolobokk   (22.06.2006 в 16:02)
 

Не выходит. Кстати, воспринимает только полный путь.

   
 
 автор: kolobokk   (22.06.2006 в 16:15)   письмо автору
 
   для: em   (22.06.2006 в 16:12)
 

в браузере на месте предполагаемой картинки на крестике правой клавишей мыши зайдите в меню "свойства" и посмотрите Адрест(URL) картинки - что он там пишет?

   
 
 автор: em   (22.06.2006 в 16:19)   письмо автору
 
   для: kolobokk   (22.06.2006 в 16:15)
 

Да, дествительно ерунда какя-то . Получается, что корневой каталог находится внутри директории, в которой и располагаются все мои файлы. http://www.tehob.com/var/www/tehob/tmp/1.jpg

   
 
 автор: kolobokk   (22.06.2006 в 16:22)   письмо автору
 
   для: em   (22.06.2006 в 16:19)
 

ну я думаю на этом вопрос исчерпан

 $dst="tmp/".$id.$ext; 


и все будет нормально

   
 
 автор: em   (22.06.2006 в 16:27)   письмо автору
 
   для: kolobokk   (22.06.2006 в 16:22)
 

Вот что пишет: Warning: copy(tmp/22.jpg): failed to open stream: No such file or directory in /var/www/tehob/tehob.com/image.php. Все дело в этом tmp. Может, его как-то переместить, т.к. tmp лежит выше моей директории tehob.com

   
 
 автор: kolobokk   (22.06.2006 в 16:48)   письмо автору
 
   для: em   (22.06.2006 в 16:27)
 

ваш файл image.php лежит в папке /var/www/tehob/tehob.com/ так?
а директоия tmp находится по адресу /var/www/tehob/tmp/ верно?
значит правильным будет такой относительный путь: ../tmp/22.jpg

его и надо заносить в БД и копировать туда файлы

   
 
 автор: em   (22.06.2006 в 16:52)   письмо автору
 
   для: kolobokk   (22.06.2006 в 16:48)
 

Да, именно так.
Написала: $dst="../tmp/".$id.$ext; ?
Не работает
А адрес у картинки http://tehob.com/tmp

   
 
 автор: Trianon   (22.06.2006 в 16:56)   письмо автору
 
   для: em   (22.06.2006 в 16:52)
 

а из tmp никто картинки показывать не даст. tmp же находится за пределами дерева документов.

   
 
 автор: em   (22.06.2006 в 17:02)   письмо автору
 
   для: Trianon   (22.06.2006 в 16:56)
 

Но они же потом оттуда в базу данных заносятся. А уже потом вытягиваем из БД

   
 
 автор: kolobokk   (22.06.2006 в 17:03)   письмо автору
 
   для: Trianon   (22.06.2006 в 16:56)
 

хм. . верно - что-то я на это внимание не обратил. Спасибо.
значит выход такой создаете папку /var/www/tehob/tehob.com/tmp/
задаете ей права 777
и скрипт image.php

<?php 
//Подсоединение к базе данных 
if(isset($_FILES['userfile']['name'])) 
            { 
                 
$q="INSERT INTO'images' (image) VALUES ('temp')"
                 
$result=mysql_query($q); 
$id=mysql_insert_id(); 
// вытаскиваем расширение загружаемого файла 
$ext strrchr($_FILES['userfile']['name'], "."); 

               
$dst="tmp/".$id.$ext
                 
copy($_FILES['userfile']['tmp_name'],$dst); 
$sql "update  images set image = '$dst' where id_ac  = $id"
$result mysql_query($sql); 
                                         } 
$q="SELECT *FROM'images'"
$rez1=mysql_query($q); 
while(
$s1=mysql_fetch_array($rez1)) 

echo 
"<img src='$s1["image"]."' />"; 


?> 
<form action="<?php echo $_SERVER['
PHP_SELF'];?>"  enctype='multipart/form-data' method='POST'> 
<input type='
file' name='userfile' /> 
<input type='
submit' value='ok' /> 
</form>

должен работать как на запись так и на отображение

   
 
 автор: em   (22.06.2006 в 17:09)   письмо автору
 
   для: kolobokk   (22.06.2006 в 17:03)
 

Простите меня, ребята,я уже всем надоела, но как эти права задаются?

   
 
 автор: Trianon   (22.06.2006 в 17:22)   письмо автору
 
   для: em   (22.06.2006 в 17:09)
 

Не переживайте Вы так. Здесь никто не кусается.
И обычно общими усилиями проблемы оказываются решенными.
Иногда несовсем сразу, но тем не менее, решения находятся.

   
 
 автор: em   (22.06.2006 в 17:24)   письмо автору
 
   для: Trianon   (22.06.2006 в 17:22)
 

Спасибо за поддержку, но как задать права я все равно не знаю.

   
 
 автор: Trianon   (22.06.2006 в 17:26)   письмо автору
 
   для: em   (22.06.2006 в 17:24)
 

Касательно прав. Как Вы работаете с файлами сайта? по FTP?
Тогда права ставятся в FTP-менеджере.
Например в FAR это команда File attributes (Ctrl-A)

   
 
 автор: kolobokk   (22.06.2006 в 17:26)   письмо автору
 
   для: em   (22.06.2006 в 17:09)
 

chmod ("/var/www/tehob/tehob.com/tmp/", 0777);

   
 
 автор: em   (22.06.2006 в 17:27)   письмо автору
 
   для: kolobokk   (22.06.2006 в 17:26)
 

Это где писать? Я в этом вопросе хуже "чайника"

   
 
 автор: kolobokk   (22.06.2006 в 17:30)   письмо автору
 
   для: em   (22.06.2006 в 17:27)
 

это можно написать один раз в php скрипте

<?
chmod 
("/var/www/tehob/tehob.com/tmp/"0777);

?>

   
 
 автор: em   (22.06.2006 в 17:35)   письмо автору
 
   для: kolobokk   (22.06.2006 в 17:30)
 

В том же файле, где у меня все скрипты на загрузку изображения или в каком-то другом?
P.S.Я пишу прямо на сервере. Унас есть такая услуга "File manager"., где я сразу редактирую все свои файлы.

   
 
 автор: em   (22.06.2006 в 18:25)   письмо автору
 
   для: kolobokk   (22.06.2006 в 17:30)
 

Где и как задать права 777 к папке. Если можно подробней.

   
 
 автор: em   (22.06.2006 в 19:57)   письмо автору
 
   для: em   (22.06.2006 в 18:25)
 

Как ставить права в FARe?

   
 
 автор: em   (22.06.2006 в 20:04)   письмо автору
 
   для: em   (22.06.2006 в 19:57)
 

Вроде бы установила. Но все равно не работает. В папку tmp не копируется

   
 
 автор: em   (22.06.2006 в 20:24)   письмо автору
 
   для: em   (22.06.2006 в 20:04)
 

Люди, помогите!
Почему-то всегда загружается только одна картинка 6.jpg

   
 
 автор: valenok   (22.06.2006 в 20:36)   письмо автору
 
   для: em   (22.06.2006 в 20:24)
 

Всмысле картинка только с цифровым названием?

   
 
 автор: valenok   (22.06.2006 в 20:37)   письмо автору
 
   для: valenok   (22.06.2006 в 20:36)
 


<?
$max_image_width
380;
$max_image_height600;
$max_image_size64 1024;
$valid_types =  array("gif","jpg""png""jpeg");

if (isset(
$_FILES["userfile"])) {
if (
is_uploaded_file($_FILES['userfile']['tmp_name'])) {
$filename $_FILES['userfile']['tmp_name'];
$ext substr($_FILES['userfile']['name'], 
strrpos($_FILES['userfile']['name'], "."));
if (
filesize($filename) > $max_image_size) {
echo 
'Error: File size > 64K.';
} elseif (!
in_array($ext$valid_types)) {
echo 
'Error: Invalid file type.';
} else {
 
$size GetImageSize($filename);
 if ((
$size) && ($size[0] < $max_image_width
&& (
$size[1] < $max_image_height)) {
if (@
move_uploaded_file($filename"/www/htdocs/upload/")) {
echo 
'File successful uploaded.';

mysql_query("INSERT INTO images (id, link) VALUES('','/upload".$filename."')",$link);

} else {
echo 
'Error: moving fie failed.';
}
} else {
echo 
'Error: invalid image properties.';
}
}
} else {
echo 
"Error: empty file.";
}
} else {
echo  
'
<form enctype="multipart/form-data" method="post"> 
<input type="hidden" name="MAX_FILE_SIZE" value="64000"> 
Send this file: <input name="userfile" type="file"> 
<input type="submit" value="Send File"> 
</form>'
;
}
?>


Script by [url=mailto:mail@young.org.ua]Александр Войцеховский[/url]
Взято с Upload файлов, и все с этим связанное

   
 
 автор: valenok   (22.06.2006 в 20:53)   письмо автору
 
   для: valenok   (22.06.2006 в 20:37)
 

А потом:
<?
$q
="SELECT *FROM 'images'"
$rez1=mysql_query($q); 
while(
$s1=mysql_fetch_array($rez1)) 

echo 
"<img src=\"".$s1['link'] ."\" />"
}

   
 
 автор: em   (22.06.2006 в 20:40)   письмо автору
 
   для: valenok   (22.06.2006 в 20:36)
 

Ну да, они ж в БД записываются в таком формате. Так вот, почему-то именно выводится 6jpg, а с другими цифрами не загружаются. Несколько раз проверяла (БД чистила)- результат один - 6.jpg.При чем url у всех правильный http://tehob.com/tmp/(id).jpg

   
 
 автор: Trianon   (22.06.2006 в 13:28)   письмо автору
 
   для: em   (22.06.2006 в 12:43)
 

$_FILES['userfile']['name'] - это совсем не то имя, под которым файл имеет смысл хранить на сервере. Это имя, которое было у файла на клиентской машине.

   
Rambler's Top100
вверх

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