[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка картинки на сервер
bugmenot
Вопщем идея такая: хочу написать скрипт галереи. Из сложных функций вижу только две:
1. Загрузка файла на сервер
2. Изменение размера картинки

Плиз ктонить дайте простейшие скрипты того и другого,т.к. везде нахожу только всякие с регистрацией каталогами и прочей лабудой.
Заранее благодарен! rolleyes.gif



Спустя 1 час, 15 минут, 5 секунд (5.03.2009 - 23:43) bugmenot написал(а):
Скриптег нашел, вот:
PHP
<?php

// Каталог, в который мы будем принимать файл:
$uploaddir './files/';
$uploadfile $uploaddir.basename($_FILES['uploadfile']['name']);

// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo 
"<h3>Файл успешно загружен на сервер</h3>";
}
else { echo 
"<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }

// Выводим информацию о загруженном файле:
echo "<h3>Информация о загруженном на сервер файле: </h3>";
echo 
"<p><b>Оригинальное имя загруженного файла: ".$_FILES['uploadfile']['name']."</b></p>";
echo 
"<p><b>Mime-тип загруженного файла: ".$_FILES['uploadfile']['type']."</b></p>";
echo 
"<p><b>Размер загруженного файла в байтах: ".$_FILES['uploadfile']['size']."</b></p>";
echo 
"<p><b>Временное имя файла: ".$_FILES['uploadfile']['tmp_name']."</b></p>";



остался вопрос: как изменить имя файла? А то они могут повторяццо.

Спустя 11 минут, 7 секунд (5.03.2009 - 23:54) Viking написал(а):
ну вроде как вот тут $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']); указать новое имя с полным путем вместо дефолтных
а вообще советуется вот эта функция
http://ru.php.net/manual/ru/function.move-uploaded-file.php

Спустя 12 минут, 56 секунд (6.03.2009 - 00:07) bugmenot написал(а):
Viking
Есть мысля, но хз как осуществить.
Можно сделать рандом все символы до ".". Подскажите плиз как обозначить эту точку smile.gif


 ! 
HardWoman


Уважемый пользователь! На нашем форуме не принято общаться в таких выражениях -->

но хз как осуществить

Прошу учесть.

Спустя 8 минут, 18 секунд (6.03.2009 - 00:15) Viking написал(а):
ну дык рандомом http://ru.php.net/manual/ru/function.rand.php
или счетчик сделать
еще можно в сторону всякой экзотики http://ru.php.net/manual/ru/function.tempnam.php покопать, для гарантии уникальности
но имхо сегодня лучше всего либо счетчик, либо таймстамп

Спустя 12 минут, 9 секунд (6.03.2009 - 00:27) Viking написал(а):
PHP
$filename "уникальный_файлнейм";
while(
file_exists($filename)) $filename.="_бля_такой_файлнейм_уже_есть";

по идее вот этот скрипт гарантирует уникальность имени файла smile.gif

Спустя 8 минут, 28 секунд (6.03.2009 - 00:36) bugmenot написал(а):
Мб у тя ася есть?)
Ты блин главного не обьяснил как менять все до точки. А то у мну и то что после точки меняет.

Спустя 9 минут, 58 секунд (6.03.2009 - 00:46) Viking написал(а):
можно через http://ru2.php.net/manual/en/function.substr.php
определяя местоположение точки через http://ru2.php.net/manual/en/function.strpos.php
то, что после точки можно добавлять конкатенацией

я бы использовал счетчк и http://ru2.php.net/manual/en/function.sprintf.php в последнем скрипте, который я привел, тогда вполне рабочий код, хотя и не оптимально с точки зрения производительности

Спустя 7 минут, 1 секунда (6.03.2009 - 00:53) bugmenot написал(а):

Спустя 4 минуты, 38 секунд (6.03.2009 - 00:57) Viking написал(а):
во, осенило
list($name, $extention) = explode(".", $filename);
а после изменения $name
$filename = $name.".".$extention;

Спустя 6 минут, 40 секунд (6.03.2009 - 01:04) bugmenot написал(а):
Viking
Я знал что это как-то очень просто можно сделать! laugh.gif

Спустя 23 минуты, 2 секунды (6.03.2009 - 01:27) bugmenot написал(а):
Черт, мне нада учиццо и учиццо!!
Вот ошипко:
Код
Parse error: syntax error, unexpected T_STRING in Z:\home\test1.ru\www\upload.php on line 16

А вот кусок кода:
Код
$file = fopen("files/one_zero.gif","rb");
 int rename ( string one_zero.gif, string new.hif)


Я пошел спать, сил моих нет sad.gif

Спустя 19 минут, 28 секунд (6.03.2009 - 01:47) kirik написал(а):
Цитата (bugmenot @ 5.03.2009 - 17:27)
int rename ( string one_zero.gif, string new.hif)

Эт чаво такое? Иди спи smile.gif

Спустя 7 часов, 8 минут, 15 секунд (6.03.2009 - 08:55) sergeiss написал(а):
Цитата (Viking @ 6.03.2009 - 00:57)
во, осенило
list($name, $extention) = explode(".", $filename);
а после изменения $name
$filename = $name.".".$extention;

Это слишком просто, чтобы быть верным smile.gif
А если имя файла само содержит точку? Тогда весь "хвост" после первой точки будет рассматриваться как расширение.

А посему, я бы предложил писать результат действия explode(".", $filename); в массив и только последнее рассматривать как расширение.

Типа такого:
PHP
$fileparts=explode(".", $filename);
$extention=end$fileparts);

При этом выделять имя файла в отдельную переменную вовсе не обязательно smile.gif Достаточно просто в итоге написать, что ты уже написал
PHP
$filename = $name.".".$extention;


PS. Чуть упростил в одном месте, поэтому редактирую. Заменил $extention=$fileparts[ count($fileparts) - 1 ] на $extention=end( $fileparts);

Спустя 31 минута, 11 секунд (6.03.2009 - 09:26) Viking написал(а):
Цитата
При этом выделять имя файла в отдельную переменную вовсе не обязательноДостаточно просто в итоге написать, что ты уже написал

дык ему как раз нужно само имя файла изменить
если имя заранее неизвестно и надо сделать с учетом возможности нескольких точек, то я бы всеже сделал так
PHP
$point strrpos($filename,".");
$name substr($filename0$point);
$ext substr($filename$point+1);

Цитата
$file = fopen("files/one_zero.gif","rb");

открывать то его зачем?

Спустя 9 минут, 3 секунды (6.03.2009 - 09:35) twin написал(а):
Вот так можно:
PHP
<?
$extention = substr($fileparts, 0, strrpos($fileparts, '.'));


bugmenot
А если фотогалерея нужна, вот тут сгенерякай, за одно мне потестить поможешь smile.gif
Вот тут демка.

Спустя 13 минут, 8 секунд (6.03.2009 - 09:48) sergeiss написал(а):
Вот еще вариант, проще уже просто некуда smile.gif БукоФФ меньше всего:
PHP
$extention=substrstrrchr$filename'.' ), 1);

Спустя 31 минута, 26 секунд (6.03.2009 - 10:20) twin написал(а):
Не катит... Если в имени файла точка, то капут.

Спустя 26 минут, 3 секунды (6.03.2009 - 10:46) sergeiss написал(а):
Очень даже "катит"! smile.gif
strrchr возвращает часть строки, начиная с последнего вхождения указанного символа, в данном случае после последней точки (и включая ее). Поэтому и надо еще применить substr.

Собственно... Что спорить? Запусти код
PHP
$s="kjoiuoijl.234.gdfj";

echo 
substrstrrchr$s'.' ), 1);

Спустя 1 час, 12 минут, 21 секунда (6.03.2009 - 11:58) Guest написал(а):
Viking
Да прочитал о фиче rename. Чтобы файл переименовать надо его открыть.
Воть:
Цитата
rename ( )

Функция rename( ) переименовывает файл. В случае успеха возвращается TRUE, a при неудаче -- FALSE. Синтаксис функции rename( ):

bool rename (string старое_имя, string новое_имя)

Пример переименования файла функцией rename( ):

$data_file = "datal.txt";

rename($data file, $datafile'.old') or die ("Could not rename $data file");


Спустя 6 минут, 50 секунд (6.03.2009 - 12:05) bugmenot написал(а):
Все ваши способы не подходют, т.к. в момент загрузки пользователем файла имя изменить нельзя (или я не нашел как)
Можно только изменить уже после загрузки.Для этого его надо открыть функциеей fopen и переименовать rename. Вот код:
Код
<?php
// Каталог, в который мы будем принимать файл:
$uploaddir = './files/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);

// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
// Выводим информацию о загруженном файле:
echo "<h3>Информация о загруженном на сервер файле: </h3>";
echo "<p><b>Оригинальное имя загруженного файла: ".$_FILES['uploadfile']['name']."</b></p>";
echo "<p><b>Mime-тип загруженного файла: ".$_FILES['uploadfile']['type']."</b></p>";
echo "<p><b>Размер загруженного файла в байтах: ".$_FILES['uploadfile']['size']."</b></p>";
echo "<p><b>Временное имя файла: ".$_FILES['uploadfile']['tmp_name']."</b></p>";
?>

Спустя 11 минут, 4 секунды (6.03.2009 - 12:16) twin написал(а):
Цитата
Собственно... Что спорить? Запусти код
Я не спорю, я факт констатирую smile.gif Конечно же запустил, прежде чем писать. До первой точки выдает, а потом - фига.
Упс. я не прав. Я думал надо имя файла, а вам наверное расширение... По крайней мере выдает все ПОСЛЕ последней точки.

Спустя 8 минут, 29 секунд (6.03.2009 - 12:24) twin написал(а):
Цитата
Можно только изменить уже после загрузки.Для этого его надо открыть функциеей fopen и переименовать rename. Вот код:

Так файл загружается во временную директорию, а функция move-uploaded-file() позволяет переписать его на постоянное место жительства уже под новым именем.

Спустя 2 минуты, 43 секунды (6.03.2009 - 12:27) twin написал(а):
PHP
<?
function up_file()
{
 

$arr 
= array(".gif",".jpg",".jpeg",".png",".swf");
    if( $_FILES['file']['error'] == 0 && $_FILES['file']['size'] > 0 )
    {
    $type = strrchr($_FILES['file']['name'], ".");
    $name = date("U").$type;
    $upname = "image/".$name;

        if(in_array($type,$arr))
        move_uploaded_file($_FILES['file']["tmp_name"],$upname);

        if(file_exists($upname))    
        return $name
;
        else
        return false
;    
    
}
    else
    
{
return false;    
    
}
}

Спустя 30 минут, 51 секунда (6.03.2009 - 12:58) bugmenot написал(а):
twin
нипашет sad.gif ошибок нет но файл не заливаеццо.

Спустя 12 минут, 51 секунда (6.03.2009 - 13:11) twin написал(а):
Все пашет.
Директория есть image на одном уровне со скриптом?
В форме прописано enctype="multipart/form-data"?
Как вызываешь функцию?

Спустя 11 минут, 55 секунд (6.03.2009 - 13:23) bugmenot написал(а):
twin
Код
<!-- Начало формы заполнения -->
<form action=upload.php method=post enctype=multipart/form-data>
<input type=file name=uploadfile>
<input type=submit value=Загрузить></form>
<!-- Конец формы заполнения -->

Спустя 18 минут, 24 секунды (6.03.2009 - 13:41) twin написал(а):
Если ты в функции ничего не менял, то должно быть так:
HTML
<input type=file name=file>

Спустя 44 минуты, 11 секунд (6.03.2009 - 14:25) bugmenot написал(а):
twin
Всеравно у мну не пашет sad.gif
Вот коды:
index.php
Код

<html>
<head><title>Добавить картинку</title></head>
<body>
<b>
<font face="Arial" size="2">
<!-- Начало формы заполнения -->
<form action=upload.php method=post enctype=multipart/form-data>
<input type=file name=file>
<br>
<input type=submit value=Загрузить></form>
<!-- Конец формы заполнения -->
</font>
</b>
</body>
</html>

Код upload.php
Код
<?
function up_file()
{

$arr = array(".gif",".jpg",".jpeg",".png",".swf");
   if( $_FILES['file']['error'] == 0 && $_FILES['file']['size'] > 0 )
   {
   $type = strrchr($_FILES['file']['name'], ".");
   $name = date("U").$type;
   $upname = "image/".$name;

       if(in_array($type,$arr))
       move_uploaded_file($_FILES['file']["tmp_name"],$upname);

       if(file_exists($upname))    
       return $name;
       else
       return false;    
   }
   else
   {
return false;    
   }
}
?>


Спустя 11 минут, 18 секунд (6.03.2009 - 14:37) twin написал(а):
Ну функцию то надо вызвать. Как же он будет пахать то... Напиши так:
HTML
<!-- Начало формы заполнения -->
Загрузился файл: <?php echo up_file() ?>

Спустя 3 минуты, 8 секунд (6.03.2009 - 14:40) bugmenot написал(а):
twin
Загрузился файл:
Fatal error: Call to undefined function up_file() in Z:\home\test1.ru\www\index.php on line 7
Дай плиз свою аську, так проще будет smile.gif
PS. Да я крайне туп. dry.gif

Спустя 12 минут, 23 секунды (6.03.2009 - 14:52) twin написал(а):
Аська не работает.
Вот так:
PHP
<?php
include('upload.php');
?>
<html>
<head><title>Добавить картинку&

Спустя 14 минут, 4 секунды (6.03.2009 - 15:06) bugmenot написал(а):
twin
Скачай новую версию квипа, работает ph34r.gif
И всеравно не пашет sad.gif((((((((((((

Спустя 6 минут, 20 секунд (6.03.2009 - 15:13) bugmenot написал(а):
Вот кароче скрипт, немогу больше blink.gif
http://www.chekin.lt/script.rar

Спустя 43 минуты, 22 секунды (6.03.2009 - 15:56) twin написал(а):
Терпение, друже!
HTML
<?php
include('upload.php');
?>
<html>
<head><title> </title></head>
<body>
<b>
<font face="Arial" size="2">
<?php echo isset($_POST['ok'])?"Загружен файл: ".up_file():NULL; ?>
<!-- -->
<form action="?" method="post" enctype="multipart/form-data">

<input type="file" name="file">
<br>
<input type="submit" name="ok" ></form>
<!-- -->
</font>
</b>
</body>
</html>


Спустя 9 минут, 26 секунд (6.03.2009 - 16:05) bugmenot написал(а):
twin
+500000 пасиба!!! laugh.gif
Последний вопрос: как осуществить вывод? Вбить в MySQL название картинки? или как?

Спустя 7 минут, 35 секунд (6.03.2009 - 16:13) twin написал(а):
ну функция возвращает новое имя файла с расширением. Делай чё хош с ним. Можешь просто в базу, а можешь в тег засунуть и потом забить. Это уже от логики приложения зависит.

Спустя 32 минуты, 45 секунд (6.03.2009 - 16:46) bugmenot написал(а):
Вот еще вопрос:
Как создать переменные из того что ввел пользователь? насколько помню, в паскале это было так: ReadLn(ы);

Спустя 41 минута, 45 секунд (6.03.2009 - 17:27) twin написал(а):
Ну если ты и этого не знаешь, то лучше начни отсюда

Спустя 27 минут, 49 секунд (6.03.2009 - 17:55) bugmenot написал(а):
twin
Все, пасиб! smile.gif У мну наверно еще будут вопросы, но пока все норм smile.gif

Спустя 13 дней, 18 часов, 22 минуты, 15 секунд (20.03.2009 - 12:17) Pavlushka написал(а):
bugmenot, ну смотря что тебе нужно, если он передал переменные, то через GET или POST...
PHP
$peremennaya=$_GET['что передано'];

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

Спустя 24 дня, 10 часов, 1 минута, 22 секунды (14.04.2009 - 21:19) deman_ru написал(а):
Решил новой темы не создавать, так как вопрос в принципе из этой области:)
подскажите скрипт вывода картинок из БД, у меня есть база под управлением Firebird, в таблице есть поле типа BLOB в котором хранится граф. информация, ну вот мне ее и нужно вывести) подскажите пожалуйста как??

Спустя 28 минут, 12 секунд (14.04.2009 - 21:47) kirik написал(а):
deman_ru
отсылаешь нужные заголовки (о том, что это за файл) и выводишь инфу.
Заголовок для jpg картинки будет такой:
PHP
header('Content-type: image/jpeg');

Спустя 12 минут, 47 секунд (14.04.2009 - 22:00) deman_ru написал(а):
kirik
а можете дать пример того что я хачу? так не могу понять((

Спустя 19 минут, 7 секунд (14.04.2009 - 22:19) kirik написал(а):
deman_ru
Тыц. Вот только картинки в БД хранить неблагодарное занятие..

Спустя 4 минуты, 22 секунды (14.04.2009 - 22:23) deman_ru написал(а):
kirik
Огромнейшее спасибо!:)

Спустя 46 минут, 47 секунд (14.04.2009 - 23:10) deman_ru написал(а):
эх..не могу разобраться сам(( прошу помощи, помогите плиз! вот что я тут намудрил:
PHP
<?php
$strconnect 
'localhost:/apache/test.ru/www/inet_magaz/db.fdb';
$db=ibase_pconnect($strconnect'sysdba''masterkey''WIN1251'01);
if(!
$db)
 {
  echo 
"<p align=center><h2>Соединение не установлено</h2>";
  exit();
 }
$sql='select * from VIEW_DISK';
$cursor ibase_query($sql);
$num_rezultibase_num_fields ($cursor);
echo 
'<p>Найдено записей:  '.$num_rezult;
echo (
"<table bgcolor=DCDCDC border=3 bordercolor=white>");
echo 
'<tr><th><b>Обложка</td><th><b>Название диска</th><th><b>Исполнитель</th><th><b>Жанр</th><th><b>Битрэйт</th><th><b>Цена</th></tr>';
for (
$i=0$i<$num_rezult$i++)
{
$row ibase_fetch_assoc($cursor);
echo 
'<tr><td>';
$image mysql_free_result($cursor$row'COVER');
header("Content-type: image/gif");
echo 
$image;
echo 
'</td><td>';
echo 
$row['NAME_DISK'];
echo 
'</td><td>';
echo 
$row['ISPOLNITEL'];
echo 
'</td><td>';
echo 
$row['GENRE_V'];
echo 
'</td><td>';
echo 
$row['BITRATE'];
echo 
'</td><td>';
echo 
$row['PRICE'];
echo 
'</td></tr>';
}
echo (
"</table>");


что меня поставило в тупик:
1. Не знаю аналога функции mysql_num_rows() для работы с БД Interbase, поэтому в строке
PHP
$num_rezultibase_num_fields ($cursor);

считает количесиво полей таблицы а не строк записей (так оставил потому что хотя бы нет ошибок:) но надо сделать как положено).
2. Не знаю аналога функции mysql_free_result() для работу с БД Interbase, поэтому в строке
PHP
$image mysql_free_result($cursor$row'COVER');

разумеется ошибка(

помогите пожалуйста, покажите как надо:(

Спустя 14 минут, 58 секунд (14.04.2009 - 23:25) kirik написал(а):
Тут все функции описаны, ищи нужные.

Ты постишь в топике не по теме. Создавай отдельный топик.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.