Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка файлов на сервер, Я знаю, что поиск и FAQ, но тем не менее 
:(
    Опции темы
Bangladesh
Дата 14.11.2005, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



смотрел в поиске и FAQ это... нашло, но сколько не пытался так и не понял как это осуществляется...
если кому-нибудь не трудно, то объясните мне пжалуста... есть форма:

Код

<form name="FormName" action="index.php" method="post">
<input type="hidden" value="on" name="scriptwork">
<input type="file" name="upload"><br>
<input type="submit" value="Кнопка">
</form>


вообщем-то... меня интересуют следующие вопросы:

1. Как осуществить получение файла
2. Проверку его типа?
3. И как загрузить его, при отсутствии ошибок в дирректорию, предварительно переименовав его?


очень буду благодарен тем, кто поможет...


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
-=Ustas=-
Дата 14.11.2005, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Вообще-то в форме загрузки файлов надо еще прописывать multipart/form-data, по-моему. Здесь всё подробно http://phpclub.ru/detail/article/upload .


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Mal Hack
Дата 14.11.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



1. Проссматривай $_FILES.
2. Там есть элемент с именем поля. Надо проверить регуляркой его на совпадению паттерну.
3. move_upload_file
PM ICQ   Вверх
Bangladesh
Дата 14.11.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



не получается. вот форма:
Код

<form enctype="multipart/form-data" name="FormName" action="index.php" method="post">
<input type="hidden" value="on" name="scriptwork">
<input type="file" name="uploadf"><br>
<input type="submit" value="Çàãðóçèòü">
</form>


вот скрипт:
Код

<?php
Error_Reporting(E_ALL & ~E_NOTICE);

if($scriptwork == "on")
 {
  $uploaddir = "/uploads/";
  move_uploaded_file($_FILES['uploadf']['tmp_name'],$uploaddir.$_FILES['uploadf']['tmp_name']);
 }
?>



--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 14.11.2005, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(I)
не получается

Ну а поточнее?
PM ICQ   Вверх
sugee
Дата 15.11.2005, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



Цитата(Mal @ 14.11.2005, 16:32)
move_upload_file

Mal Hack твой вклад в популяризацию этой функции неоценим, но зачем ты вводишь людей в заблуждение...
Функция называется move_uploaded_file
Ты и меня также сбил с панталыку smile

PM MAIL   Вверх
R.M.
Дата 15.11.2005, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



I, GyoZ

Вопервых. Если у тебя неработае скрипт то убери или закомментируй строку
Код

Error_Reporting(E_ALL & ~E_NOTICE);

она скриывает ошибки

Заливать попробуй так
Код

move_uploaded_file($_FILES['uploadf']['tmp_name'],dirname(1)."/dir/".$_FILES['uploadf']['name']);



--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Bangladesh
Дата 15.11.2005, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



скачал какой-то неплохой самоучитель... довольно там много про файлы сказано... вот по нему что написал...

Код

if($_POST['scriptwork'] == "on")
 {
   function getID()
    {
     function getRand($low, $high)
      {
       mt_srand(time()+(double)microtime() * 1000000);
       $random_Num = mt_rand($low, $high);
       return $random_Num;
      }

     $c=getRand(1, 999);
     $c2=getRand(1, 500);
     $c3=getRand(1, 350);
     $c4=getRand(1, 10);
     $c5=getRand(10, 40);
     $c6=getRand(1, 2);

     $id = ($c + $c2 + $c3 + $c4 + $c5)*(100 + $c4 + $c5)*($c + $c2 + 150)*$c6;
     $id =(int)$id;
     return $id;
    }

   $fileid = getID();
   $filetype = "";
   if(is_file($_FILES['uploadf']['name'])=="FALSE")
    {
     echo "Ошибка с файлом";
    }
   else
    {
      echo $_FILES['uploadf']['name']."<br>";
      echo $_FILES['uploadf']['tmp_name']."<br>";
      echo $_FILES['uploadf']['tmp_name']."<br>";
      echo $_FILES['uploadf']['size']."<br>";
      echo $_FILES['uploadf']['type']."<br>";
      if($_FILES['uploadf']['type']=="image/gif")
       { $filetype = ".gif"; }

      copy($_FILES['uploadf']['tmp_name'],"uploads/_".$fileid.$filetype);
    }

 }
?>


вроде всё работает нормально... конечно можно было использовать просто $_FILES['uploadf']['name'], но там ид не присобачивается, поскольку название с расширением... гы...

а как можно сделать перевод MIME-типа в обычный? или только так...?... хотелось бы узнать...


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Wolf1994
Дата 16.11.2005, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 7
Всего: 29



Советую проверить функцию copy не только на локалке, но и на сервере. Я тоже однажды хотел её использовать, на Денвере отработала нормально, а на хостинге заартачилась - капризная. А мув_аплодед_файл у меня тоже не работал - как я выяснил был неверный путь. Путь надо указывать от рута сервера ("{$_SERVER['DOCUMENT_ROOT']}/"):
Код

if (move_uploaded_file($_FILES['file']['tmp_name'], "{$_SERVER['DOCUMENT_ROOT']}/".$directory1.$_FILES['file']['name'])) {print "Ok!<br>";} else {print "Ko!<br>";}

- Возможно пригодится...
PM MAIL WWW   Вверх
-=Ustas=-
Дата 16.11.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Цитата(Wolf1994 @ 16.11.2005, 00:11)
Советую проверить функцию copy не только на локалке, но и на сервере.

Функцию copy вообще не советую даже пробовать.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Bangladesh
Дата 16.11.2005, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



Цитата
Цитата(Wolf1994 @ 16.11.2005, 00:11)
Советую проверить функцию copy не только на локалке, но и на сервере.

Функцию copy вообще не советую даже пробовать.

$_SERVER['DOCUMENT_ROOT'] - а можно привести примеры значений?


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Wolf1994
Дата 16.11.2005, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 7
Всего: 29



Цитата(I)
$_SERVER['DOCUMENT_ROOT'] - а можно привести примеры значений?

Не совсем понял... На локальной машине, например, эта переменная будет возвращать путь от корня диска к сайту. Что-то типа: d:/denwer/home/домен/www/ - кажется. На сервере путь от корня сервера. Без этого я никак не мог указать путь правильно...
PM MAIL WWW   Вверх
papex
Дата 17.11.2005, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 18.3.2004

Репутация: -1
Всего: нет



Вот тебе готовый работающий код. Загрузка фотографии. (что первое попалось)
Разбирайся сам.



new_photo.php
Код

<html>
<head>
<title><?=$name_title?> • Сайт «Фоторепортер»</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel=stylesheet href="/style.css" type="text/css">
<meta name="Robots" content="NOINDEX, FOLLOW">

</head>
<body style="margin: 5px 10px 5px 10px;">
<h1>Загрузить новые файлы</h1>
<p><?=$error_echo?>
<?
include $_SERVER['DOCUMENT_ROOT']."/xxxxx.php"; // переменные + подключаемся к базе

$sql_u = "
SELECT * 
FROM stock_user
WHERE login='$autor'
";
$result_u = mysql_query($sql_u,$connection);//получаем данные пользователя

    while ($row_in = mysql_fetch_array($result_u)) 
            {
            $fam= $row_in['fam'];
            $io = $row_in['io'];
            $user_num = $row_in['user_num'];
            }
?>

<p>Автор  <?=$fam?> <?=$io?> (<?=$autor?>).
<p><form action="new_photo_add.php" method="post" enctype="multipart/form-data" name="form1">
<input name="autor" type="hidden" value="<?=$autor?>">
<input name="id_photo" type="hidden" value="<?=time()?>">
<table width="100%" border="1" cellspacing="2" cellpadding="2" 
bordercolor=#996600
style="border-collapse:collapse; 
font: normal 11px  tahoma,Verdana,Arial,Helvetica,Geneva,sans-serif;">
  <tr>
    <td>Файл</td>
    <td><input name="file_in" type="file" size="60"></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Раздел</td>
    <td><select name="dir_in" size="5"> selected
      <?
$sqld = "
SELECT * 
FROM stock_dir
";
$resultd = mysql_query($sqld,$connection); //список разделов

    while ($rowd = mysql_fetch_array($resultd)) 
            {
            $id_dir = $rowd['id_dir'];
            $name_dir  = $rowd['name_dir'];
            if ($id_dir == $dir_in){$selected = "selected";}
            echo "<option ".$selected." value=\"$id_dir\">$name_dir</option>";
            unset ($dir, $name_dir, $id_dir, $selected);
            }
?>
    </select></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Название</td>
    <td><input type=text name="name_photo" id="name_photo" value="<?=$name_photo?>" size=40></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Цена</td>
    <td><input type="text" name="price" id="price" value="<?=$price?>"> 
    <select name="currency" id="currency">
      <option value="$" <?if ($currency == "$"){echo "selected";}?>>$</option>
      <option value="руб." <?if ($currency == "руб."){echo "selected";}?>>руб.</option>
    </select></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Исходный носитель </td>
    <td><input type=text name="film" id="film" value="<?=$film?>" size=40></td>
    <td>&nbsp;</td>
  </tr>
    <tr>
    <td>Максимальный размер</td>
    <td><input type=text name="size" id="size" value="<?=$size?>" size=40></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Возможность исключительного права </td>
    <td><select name="ex" id="ex">
      <option value="да" <?if ($ex == "да"){echo "selected";}?>>да</option>
      <option value="нет" <?if ($ex == "нет"){echo "selected";}?>>нет</option>
    </select></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Срок получения</td>
    <td><input type=text name="srok" id="srok" value="<?=$srok?>"></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Дополнительная информация</td>
    <td><textarea name="text" cols="60" rows="3" id="text"><?=$text?></textarea></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="Submit" value="Загрузить"></td>
    <td>&nbsp;</td>
  </tr>
</table>

</form>
<p>&nbsp; </p>





new_photo_add.php
Код

<html>
<head>
<title><?=$name_title?> • Сайт «Фоторепортер»</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel=stylesheet href="/style.css" type="text/css">
<meta name="Robots" content="NOINDEX, FOLLOW">

</head>
<body style="margin: 5px 10px 5px 10px;">


<?
include $_SERVER['DOCUMENT_ROOT']."/xxxxx.php"; // переменные



if ($_FILES['file_in']['size'] <1)
{
$error_echo =   "<p align=center><font color=800000><b>Файл не загружен.<br>
Вероятно, вы забыли указать файл для загрузки.</b></font>";
include "new_photo.php";
return;
}


If ($_FILES['file_in']['size'] > 102400)
{
$error_echo =  "<p align=center><font color=800000><b>Ваш файл больше чем допустимо.<br>
Размер вашего файла ".$_FILES[file_in]['size']."байт.<br>
Максимальный разрешенный размер файла 102400 байт.</b></font>";
include "new_photo.php";
return;
}


$text = trim ($text);
$text = str_replace ("\"", "&quot;", $text);
$text = str_replace ("\n", "<br>", $text);
$text = str_replace ("\r", "<br>", $text);
$text = str_replace ("\\", "", $text);
$text = str_replace ("</P>", "", $text);
$text = str_replace ("<p><p", "<p", $text);
$text = str_replace ("?>", ">", $text);
$text = str_replace ("<p><br>", "<p>", $text);
$text = str_replace ("<br><br>", "<br>", $text);
//сокращено


$name_photo = trim ($name_photo);




$image = $file_in;
$o_file = $image;

   $image_info = getImageSize($o_file) ; // see EXIF for faster way
   
   switch ($image_info['mime']) {
       case 'image/gif':
          $tip = "gif";
           if (imagetypes() & IMG_GIF)  { // not the same as IMAGETYPE
               $o_im = imageCreateFromGIF($o_file) ;
           } else {
               $ermsg = 'GIF images are not supported<br />';
           }
           break;
       case 'image/jpeg':
       $tip = "jpg";
           if (imagetypes() & IMG_JPG)  {
               $o_im = imageCreateFromJPEG($o_file) ;
           } else {
               $ermsg = 'JPEG images are not supported<br />';
           }
           break;
       case 'image/png':
       $tip = "png";
           if (imagetypes() & IMG_PNG)  {
               $o_im = imageCreateFromPNG($o_file) ;
           } else {
               $ermsg = 'PNG images are not supported<br />';
           }
           break;
       /*case 'image/wbmp':
       $tip = "wbmp";
           if (imagetypes() & IMG_WBMP)  {
               $o_im = imageCreateFromWBMP($o_file) ;
           } else {
               $ermsg = 'WBMP images are not supported<br />';
           }
           break;*/
       default:
      $error_echo =   "<p align=center><font color=800000><b>Такой тип файла запрещен для загрузки.</b></font>";
      include "new_photo.php";
       return;
       break;
   }
$name_new_file_0 = time();
$name_new_file = $name_new_file_0.".".$tip;
$uploadfile = $_SERVER['DOCUMENT_ROOT']."/путь_до_/catalogue/".$dir_in."/".$name_new_file;   
//echo "<p> $uploadfile";
   if (!isset($ermsg)) {
   
$max_width = 800; // размер фото горизонтальной
$max_height = 600;// размер фото вертикальной
$width = imagesx($o_im) ;
$height  = imagesy($o_im) ;

// если размер не больше
if ($max_width>=$width && $max_height>=$height)
{
    if(copy ($file_in, $uploadfile))
    {

    chmod ($uploadfile, 0777);
    
$sql = "
INSERT INTO `stock_photo` 
( `id_photo` ,`dir` , `name_photo` , `autor` , `price` , `currency` , `film` , `size` , `ex` , `srok` , `text` ) 
VALUES (
'$name_new_file_0', '$dir_in', '$name_photo', '$autor', '$price', '$currency', '$film', '$size', '$ex', '$srok', '$text'
)";
$result = mysql_query($sql,$connection) or die ('<p>Не возможно подключиться к базе данных. <br>Ошибка: ' . mysql_error());
        if ($result)
        {
        $error_echo =  "<p align=center><font color=800000><b>Фотография загружена удачно.</font></b>";
        }
        else
        {
        $error_echo =  "<p align=center><font color=800000><b>Ошибка записи в базу</font></b>";
        }
    }
    else
    {
    $error_echo =  "<p align=center><font color=800000><b>Ошибка: файл не загружен.</b></font>";
    }
include "new_photo.php";
return;
}


// если размер больше
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;

if ( ($width <= $max_width) && ($height <= $max_height) ) {
  $tn_width = $width;
  $tn_height = $height;
}
else if (($x_ratio * $height) < $max_height) {
  $tn_height = ceil($x_ratio * $height);
  $tn_width = $max_width;
}
else {
  $tn_width = ceil($y_ratio * $width);
  $tn_height = $max_height;
}


       $t_im = imageCreateTrueColor($tn_width,$tn_height);
       imageCopyResampled($t_im, $o_im, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
       switch ($tip)  {
       case 'jpg':ImageJpeg($t_im, $uploadfile, 50);break;
       case 'gif':imagegif($t_im, $uploadfile);break;
       case 'png':imagepng($t_im, $uploadfile);break;
       }
       chmod ($uploadfile, 0777);
       
       imageDestroy($o_im);
       imageDestroy($t_im);
$sql = "
INSERT INTO `stock_photo` 
( `id_photo` ,`dir` , `name_photo` , `autor` , `price` , `currency` , `film` , `size` , `ex` , `srok` , `text` ) 
VALUES (
'$name_new_file_0', '$dir_in', '$name_photo', '$autor', '$price', '$currency', '$film', '$size', '$ex', '$srok', '$text'
)";
$result = mysql_query($sql,$connection) or die ('<p>Не возможно подключиться к базе данных. <br>Ошибка: ' . mysql_error());
        if ($result)
        {
        $error_echo =  "<p align=center><font color=800000><b>Фотография загружена удачно.</font></b>";
        }
        else
        {
        $error_echo =  "<p align=center><font color=800000><b>Ошибка записи в базу</font></b>";
        }
include "new_photo.php";
return;   
       
   }
   return isset($ermsg)?$ermsg:NULL;
   
      
   
?>


Это сообщение отредактировал(а) papex - 17.11.2005, 02:12
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0956 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.