С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 19.03.2010
Сообщений: 19
1

Доработка скрипта загрузки фото

22.10.2010, 15:12. Показов 4338. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В одной из прошлых тем понимался вопрос проработки скрипта загрузки картинок с ресайзом и созданием превьюшек.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 <html>
<head>
  <title>Результат загрузки файла</title>
</head>
<body>
<?php  
 $id = 1;
 $a = 2;
 
$imgDir = dirname(__file__) . "/foto/"; // каталог для хранения изображений  
@mkdir($imgDir, 0777); // создаем каталог, если его еще нет  
if (isset($_POST['doUpload'])) 
{  
$data = $_FILES['userfile'];  
$tmp = $data['tmp_name'];  //это просто для удобства  
if ($_FILES['userfile']['size'] > 1024 * 5 *1024)
{
echo "<p>Слишком большой размер изображения!</p>";
exit();
}
$info = @getimagesize($_FILES['userfile']['tmp_name']); //берем информацию о файле  
 
  if (preg_match('{image/(.*)}is', $info['mime'], $p))
  {  //убеждаемся что файл есть ни что иное как изображение
                
 $newwidth = 120; //в данную переменную мы помещаем желаемую ширину файла  
 $newwidth1 = 300; //в данную переменную мы помещаем желаемую ширину файла
 
 $newname = $imgDir.$id.".".basename($info['mime']);  //осторожно! если файл с таким именем существует, 
                                                                                                    //то он будет перезаписан загружаемым  
$newname1 = $imgDir.$a.".".basename($info['mime']);  //осторожно! если файл с таким именем существует, 
                                                                                                    //то он будет перезаписан загружаемым                                                                                                                                                                                                       
  
if(resize($tmp, $newwidth, $newname) and resize1($tmp, $newwidth1, $newname1)){  
 echo "Изображение было успешно загружено!";  
 }  
 else {  
 echo "Произошла ошибка при загрузке изображения";  
 }  
}  
else {  
echo "Ошибка! Попытка загрузить файл недопустимого формата.";  
}  
}  
  
?>  
  
  
<?php  
  function resize($photo_src, $width, $name){  
 $parametr = getimagesize($photo_src);  
 list($width_orig, $height_orig) = getimagesize($photo_src);  
  $ratio_orig = $width_orig/$height_orig;  
 $new_width = $width;  
  $new_height = $width / $ratio_orig;  
 $newpic = imagecreatetruecolor($new_width, $new_height);  
 switch ( $parametr[2] ) {  
  case 1: $image = imagecreatefromgif($photo_src);  
   break;  
   case 2: $image = imagecreatefromjpeg($photo_src);  
   break;  
  case 3: $image = imagecreatefrompng($photo_src);  
   break;  
 }  
 imagecopyresampled($newpic, $image, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);  
 imagejpeg($newpic, $name, 100);  
 return true;  
 }  
 
  function resize1($photo_src, $width, $name){  
 $parametr = getimagesize($photo_src);  
 list($width_orig, $height_orig) = getimagesize($photo_src);  
  $ratio_orig = $width_orig/$height_orig;  
 $new_width1 = $width;  
  $new_height = $width / $ratio_orig;  
 $newpic = imagecreatetruecolor($new_width1, $new_height);  
 switch ( $parametr[2] ) {  
  case 1: $image = imagecreatefromgif($photo_src);  
   break;  
   case 2: $image = imagecreatefromjpeg($photo_src);  
   break;  
  case 3: $image = imagecreatefrompng($photo_src);  
   break;  
 }  
 imagecopyresampled($newpic, $image, 0, 0, 0, 0, $new_width1, $new_height, $width_orig, $height_orig);  
 imagejpeg($newpic, $name, 100);  
 return true;  
 }  
 ?> 
 
 <form name="upload" action="upload.php" method="POST" ENCTYPE="multipart/form-data">  
  Выберите изображение для загрузки: <input type="file" name="userfile"></ br>  
  <input type="submit" name="doUpload" value="Загрузить">  
 </form>  
</body>
</html>
Скрипт отлично работает, только хотелось бы его модернизировать для использование в базе данны. Подскажите пожалуйста как в этом скрипте можно сделать генерацию случайных имен файлов и одновременное занесение этих имен в таблицу MySQL? Хотелось бы потом использовать данные из таблицы в качестве массива.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2010, 15:12
Ответы с готовыми решениями:

Форма загрузки фото
Добрый день подскажите пожалуйста что нужно установить что бы заработал &quot;загрузчик&quot;

Форма загрузки фото на сайт
Добрый день! как сделать форму загрузки фото на сайт подскажите пожалуйста :)

Ошибка загрузки фото на сервер
Странная вещь. Ставлю скрипт на домен латиницей все работает. Ставлю этот же скрипт на домен с...

Нубский вопрос по скорости загрузки скрипта
Здраствуйте! У меня вопрос: я замеряю время работы скрипта, и оно у меня, предположим, 0,01...

3
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
22.10.2010, 19:10 2
есть такая ф-я (mysql_insert_id()):

Как получить уникальный идентификатор для последней внесенной строки?

При внесении записи в таблицу, содержащую столбец с атрибутом AUTO_INCREMENT, последний сгенерированный идентификатор можно получить, вызвав функцию mysql_insert_id().

Для извлечения этого id можно также использовать функцию LAST_INSERT_ID() в строке запроса, передаваемой в mysql_query().

Для проверки, используется или нет поле AUTO_INCREMENT, можно выполнить следующий код. Этот код также проверяет, был ли данный запрос вида INSERT с использованием AUTO_INCREMENT:

if (mysql_error(&mysql)[0] == 0 &&
mysql_num_fields(result) == 0 &&
mysql_insert_id(&mysql) != 0)
{
used_id = mysql_insert_id(&mysql);
}

Самое последнее сгенерированное значение идентификатора сохраняется на сервере в течение времени жизни данного соединения. Это значение не может быть изменено другим клиентом, более того, оно не будет изменено даже при обновлении другого столбца AUTO_INCREMENT конкретной величиной (т.е. не NULL или 0).

Идентификатор, который был сгенерирован для одной таблицы, можно вставить в другую таблицу, используя команды SQL, как показано ниже:

INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # генерация ID вставкой NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # использование ID во второй таблице
0
0 / 0 / 0
Регистрация: 19.03.2010
Сообщений: 19
22.10.2010, 19:19  [ТС] 3
Не скажу что я все понял, но буду пытаться разобраться. Спасибо за помощь! А если пойти боле легким путем и оставить имя файла такое же как было на компьютере клиента и просто вносить это имя под следующим ID в таблицу? Насколько этот вариант легче в осуществлении?
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
22.10.2010, 19:48 4
raptor686, по какому ID?
mysql_insert_id() каждой хрени в БД дает спец номер, и ты можешь вместо имени файла (в твоем случае фотки) приписать этот номер и сохранить в папку уже файл с новым именем, и обращаться к нему из БД если нужно.
т.е фотка будет называться к примеру не так - foto.gpg, а так - номер.jpg (номер генерируется случайно)

Добавлено через 1 минуту
для этого номера надо будет создать новое поле в БД
0
22.10.2010, 19:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2010, 19:48
Помогаю со студенческими работами здесь

PHP+MySQL Как объединить форму загрузки данных с загрузкой фото
Всем доброго времени. Подскажите как объединить форму загрузки фото с формой загрузки данных, с...

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

Загрузка скрипта/страницы, индикатор загрузки
Имеется php скрипт, который получает данные через api, но при этом загрузка страницы просто...

У меня две загрузки файлов на ftp, в одном загружается фото а в другом текстовые файлы
У меня две загрузки файлов на ftp, в одном загружается фото а в другом текстовые файлы, нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru