[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: класс по загрузки изображения
nugle
пробую написать класс по загрузке картинки на сайт

<?php
/*
Задачей данного класса является загрузка изображений
с проверками:

1. на формат,
2. на размер.

Если данный файл прошёл все проверки, класс должен будет сохранить файл в директории images
*/

// $_FILES['uploadfile']['name'];
// $_FILES['uploadfile']['size'];
// $_FILES['uploadfile']['type'];
// $_FILES['uploadfile']['tmp_name'];


class uploadImg
{
private $uploaddir = 'images';

function uploadTest()
{

function type()

{
$types = array('jpg','jpeg','gif','png');
$typefile = explode('.', $_FILES['uploadfile']['name']);

foreach ($types as $key => $value)
{
foreach($typefile as $key2 => $value)
{
if($types[$key] == $typefile[$key2])
{
$mess = true;
break;
}

}
}


if($mess != true)
$mess = false;

return $mess;


}

function size()
{
$size = 1024*1024*10;

if($_FILES['uploadfile']['size'] < $size)
$mess = true;
return $mess;
}
if(type() == true && size() == true)
{
function movement()
{
$uploaddir = 'images';
$distination = $uploaddir.'/'.$_FILES['uploadfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))
return true;

}
}

if(type() == true && size() == true && movement() == true)
return true;
}

}


вызываю

<?php
require './config/connectDB.php';
require './class/uploadImg.php';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
</
head>

<
body>

</
body>
<
form enctype="multipart/form-data" action="" method="post">
<
input type="file" name='uploadfile' /><br />
<
input type="submit" />
</
form>


<?php

$db = new connectDB();

$obj = new uploadImg();
if($obj->uploadTest() == true)
{
$sql = "insert into images (url,img) values ('".$_FILES['uploadfile']['tmp_name']."','".$_FILES['uploadfile']['name']."')";
$result = mysql_query($sql) or die(mysql_error.'<br />'.$sql);

if($result)
echo 'Файл загружен успешно!';

}
else
echo 'Файл не был загружен!';
?>

</html>

Но почему то не работает, без функции movement, всё работало!



Спустя 1 час, 9 минут, 54 секунды (27.03.2011 - 18:24) T1grOK написал(а):
У тебя метод movement находится в условии). И не только он)

Спустя 20 минут, 42 секунды (27.03.2011 - 18:44) nugle написал(а):
T1grOK,
а почему он не работает?

Спустя 2 минуты, 10 секунд (27.03.2011 - 18:47) T1grOK написал(а):
В коде полная анархия. Класс построен неправильно! Кроме того хромает общая логика:

if(type() == true && size() == true)
{
//тра ля ля

if(type() == true && size() == true && movement() == true)
return true;

Зачем повторно перепроверять тип и размер непонятно! Ведь достаточно сделать так:

if(type() == true && size() == true && movement() == true)
{
return true;
}

И вообще, должно быть что то типа:

class uploadImg
{
private $uploaddir = 'images';

public function uploadTest(){
if($this->type() == true && $this->size() == true && $this->movement() == true){
return true;
}
}


private function type(){
$types = array('jpg','jpeg','gif','png');
$typefile = explode('.', $_FILES['uploadfile']['name']);

foreach ($types as $key => $value){
foreach($typefile as $key2 => $value){
if($types[$key] == $typefile[$key2]){
$mess = true;
break;
}
}
}


if($mess != true) $mess = false;

return $mess;
}

private function size(){
$size = 1024*1024*10;

if($_FILES['uploadfile']['size'] < $size){
$mess = true;
}
return $mess;
}

private function movement(){
$uploaddir = 'images';
$distination = $uploaddir.'/'.$_FILES['uploadfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination)) return true;
}
}


В сети полно готовых библиотек для аплоадинга файлов на сервер у которых весьма широкие возможности.

Спустя 10 минут, 46 секунд (27.03.2011 - 18:57) nugle написал(а):
T1grOK,
я для себя, пробую классы писать..
всё равно не получается!пишет файл не загружен

Спустя 56 минут, 57 секунд (27.03.2011 - 19:54) T1grOK написал(а):
Вот

private function movement(){
$uploaddir = 'images';
$distination = $uploaddir.'/'.$_FILES['uploadfile']['name'];
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $destination)) return true;
}

Спустя 2 минуты, 16 секунд (27.03.2011 - 19:57) nugle написал(а):
чем он от моей отличается?
пишет типо

Warning: move_uploaded_file() [function.move-uploaded-file]: Filename cannot be empty in Z:\home\fiesta.ru\www\class\uploadImg.php on line 67

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'Z:\tmp\php224.tmp' to '' in Z:\home\fiesta.ru\www\class\uploadImg.php on line 67

Спустя 1 минута, 59 секунд (27.03.2011 - 19:59) T1grOK написал(а):
Не ну народ. Уже показал и исправил. Неужели сложно 3 строчки сравнить?)
$_FILES['userfile']['tmp_name'] => $_FILES['uploadfile']['tmp_name']

Спустя 1 минута, 45 секунд (27.03.2011 - 20:00) nugle написал(а):
T1grOK
это я поменял, ошибки выше

Спустя 11 минут, 42 секунды (27.03.2011 - 20:12) T1grOK написал(а):
Решись, у тебя $distination или $dеstination

Спустя 19 минут, 39 секунд (27.03.2011 - 20:32) nugle написал(а):
T1grOK
вот к чему приводит моя невнимательность!спасибо!

Спустя 9 месяцев, 19 дней, 15 часов, 35 минут, 33 секунды (17.01.2012 - 12:07) Guest написал(а):
с наслаждением прочитал диалог! )))
Интересная история получилась.
Назвал бы - история одного урока... )

Прохожий.

Спустя 55 минут, 30 секунд (17.01.2012 - 13:03) SlavaFr написал(а):
Цитата (nugle @ 27.03.2011 - 15:57)
T1grOK,
я для себя, пробую классы писать..
всё равно не получается!пишет файл не загружен

тоесть дело не в классах, а совсем в другом.
Если бы был включен error_reporting(E_ALL), без которого я бы запрещал вообще вопросы по пхп-ошибкам задавать, то возможно проблема была бы решена раньше.

что касаетса OOP, то я бы посоветовал не пременять в классах, которые ты собераешся использовать и тестировать многократно, гловбальные переменные как $_FILES, $_POST .$_.....
Быстрый ответ:

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