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

Форум PHP

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

 

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

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

тема: Кнопка "обзор"
 
 автор: Spenser   (11.07.2006 в 21:27)   письмо автору
 
 

Здрасте!
У меня такой вопрос: как сделать кнопку "обзор"? а именно, что я хочу получить: есть несколько полей input type=text. как добавить поле для загрузки файла на сайт в определенное место и хотелось бы что бы была только одна кнопка для отправки данных и загрузки файла. кстати, имя файла с расширением должно записывать в БД.
Помогите плиз!!!
Заранее спасибо

   
 
 автор: Axxil   (11.07.2006 в 22:29)   письмо автору
 
   для: Spenser   (11.07.2006 в 21:27)
 

> хотелось бы что бы была только одна кнопка для отправки данных и загрузки файла
А как тогда будет происходить выбор файла для загрузки?

   
 
 автор: Spenser   (12.07.2006 в 00:11)   письмо автору
 
   для: Axxil   (11.07.2006 в 22:29)
 

на всей странице будет две кнопки "обзор" и "Выполнить", "обзор" будет только выбирать файл с компа клиент, а "выполнить" должна загружать данные и выбранний файл. По крайней мере я хотел бы чтобы так работало :)) а там как получиться. пример: должно быть также как при ответе на сообщение (всего две кнопки "обзор" и "отправить")

   
 
 автор: Lelik   (11.07.2006 в 23:34)   письмо автору
 
   для: Spenser   (11.07.2006 в 21:27)
 

Сделай большую форму например

<html>
 <body>
  <form action="script.php" metod="post" enctype="multipart/form-data">
   <!--
     Ну а здесь уже идет все основное содержимое страницы
   -->
  </form>
 </body>
</html>

   
 
 автор: Spenser   (12.07.2006 в 00:13)   письмо автору
 
   для: Lelik   (11.07.2006 в 23:34)
 

это я сделал, а вот как загружать файл на сервак в определенное место? что надо писать в обработчике для того что загрузить файл. как обработать данные я знаю, а вот про файлы без понятия :((

   
 
 автор: Lelik   (12.07.2006 в 00:45)   письмо автору
 
   для: Spenser   (12.07.2006 в 00:13)
 

ссылка где можно про это прочитать - http://www.softtime.ru/bookphp/gl6_5.php
Если чего непонятно, то говори в каком именно месте непонятно разберемся.

   
 
 автор: Lelik   (12.07.2006 в 00:59)   письмо автору
 
   для: Lelik   (12.07.2006 в 00:45)
 

Там вообще мало написано...
При приеме файла из формы с помощью данных переменных принимаются:
- $_FILES['filename']['name'] - Имя файла(пример рисунок.gif)
- $_FILES['filename']['size'] - размер файла
- $_FILES['filename']['type'] - тип файла
- $_FILES['filename']['tmp_name'] - имя временного файла, в который сохр. загруженый файл
filename - это имя поля формы из которого производится загрузка файла
ПРИМЕР

<?php
//это код файла обработчика, который принимает файл.
if(copy($_FILES['filename'][tmp_name'], $path.$_FILES['filename']['name'])
   {
      echo "IT IS LOADED"
   }
else
  {
      echo "ERROR!!!";
  }
?>

где $path - это путь к папке куда файл будет сохранен на сайте.

   
 
 автор: Spenser   (12.07.2006 в 09:19)   письмо автору
 
   для: Lelik   (12.07.2006 в 00:59)
 

попробывал этот скрипт, не получается, в нем где то ошибка т.к. он даже не обрабатывается до конца (при выполнении белая страница). в чем может быть дело?

   
 
 автор: Lelik   (12.07.2006 в 09:23)   письмо автору
 
   для: Spenser   (12.07.2006 в 09:19)
 

Тогда вместо $_FILES попробуй $_FILE написать( просто не помню как правильно $_FILES или $_FILE) или полное название $_HTTP_POST_FILES

   
 
 автор: Lelik   (12.07.2006 в 09:29)   письмо автору
 
   для: Lelik   (12.07.2006 в 09:23)
 

Попробуй этот код. Я им почти всегда пользуюсь(или на нем основаным)

<?php
 
include "config.php";
 
$userfile $_FILES["file"]["tmp_name"];
 
$userfile_name $_FILES["file"]["name"];

 
$path "images/".$userfile_name;

 if(
is_uploaded_file($userfile))
  {

          if(!
move_uploaded_file($userfile,$path))
           {
                   echo 
'Error 1';
                   exit();
           }
          else
           {
             
$query "INSERT INTO picture VALUES (NULL, '$path')";
             
$result = @mysql_query($query);
             if(
$result){
                   echo 
'<html><head><meta http-equiv="Refresh" content="0; url=index.php"></head></html>';
                   exit();
           } else echo 
"f**k";    }
  }
 else
  {
          echo 
'Error 2';
          exit();
  }
?>

   
 
 автор: Spenser   (12.07.2006 в 09:37)   письмо автору
 
   для: Lelik   (12.07.2006 в 09:29)
 

можешь пояснить что в каждом if и esle происходит. И какая команда заливает файл на серв.

   
 
 автор: Boss   (12.07.2006 в 09:44)   письмо автору
 
   для: Spenser   (12.07.2006 в 09:37)
 

Вот попробуй:


<?php 
if(isset($_FILES["myfile"])) // Если файл существует 

  
$catalog "../image/"// Наш каталог 
  
if (is_dir($catalog)) // Если такой каталог есть 
  

    
$myfile $_FILES["myfile"]["tmp_name"]; // Времменый файл 
    
$myfile_name $_FILES["myfile"]["name"]; // Имя файла 
    
if(!copy($myfile$catalog)) echo 'Ошибка при копировании файла '.$myfile_name // Если неудалось скопировать файл 
  

  else 
mkdir('../image/'); // Если такого каталога нет, то мы его создадим 

?>

   
 
 автор: Lelik   (12.07.2006 в 09:45)   письмо автору
 
   для: Spenser   (12.07.2006 в 09:37)
 


<?php
include "config.php"
$userfile $_FILES["file"]["tmp_name"]; 
$userfile_name $_FILES["file"]["name"]; 

$path "images/".$userfile_name
// Доселе надеюсь понятно?
if(is_uploaded_file($userfile)) 
  {
          if(!
move_uploaded_file($userfile,$path)) 
           { 
              
//До сего места пересылается файл в нужную директорию. То есть тут если
              //файл не переслан, ниже происходит запись в бд пути к файлу.
                   
echo 'Error 1'
                   exit(); 
           } 
          else 
           { 
             
//Если запись в БД прошла успешно автоматом переходим на нужную страницу.
             
$query "INSERT INTO picture VALUES (NULL, '$path')"
             
$result = @mysql_query($query); 
             if(
$result){ 
                   echo 
'<html><head><meta http-equiv="Refresh" content="0; url=index.php"></head></html>'
                   exit(); 
           } else echo 
"f**k";    } 
  } 
else 
  { 
          echo 
'Error 2'
          exit(); 
  }
?>

Функции is_uploaded_file() & move_uploaded_file проверяют загружен ли файл, и не является он такого вида dir/passwd

   
 
 автор: Spenser   (12.07.2006 в 10:14)   письмо автору
 
   для: Lelik   (12.07.2006 в 09:45)
 

Огромное спасибо!!! а какие еще есть параметры у $_FILES["file"]["вот здесь"]; и за что они отвечают (самые используемые)?

   
 
 автор: valenok   (12.07.2006 в 10:15)   письмо автору
 
   для: Spenser   (12.07.2006 в 10:14)
 

$_FILES['userfile']['name'] - оригинальное имя файла, такое, каким его видел пользователь, выбирая файл;
$_FILES['userfile']['type'] - mime/type файла, к примеру, может быть image/gif; это поле полезно сохранить, если Вы хотите предоставлять интерфейс для скачивания загруженных файлов;
$_FILES['userfile']['size'] - размер загруженного файла;
$_FILES['userfile']['tmp_name'] - полный путь к временному файлу на диске;
$_FILES['userfile']['error'] - Начиная с версии 4.2.0, содержит код ошибки, который равен 0, если операция прошла успешно.

   
 
 автор: valenok   (12.07.2006 в 10:15)   письмо автору
 
   для: Lelik   (12.07.2006 в 09:45)
 

Во первых
поля в форме должны иметь тип file
во вторых:
Upload файлов, и все с этим связанное

   
 
 автор: Spenser   (12.07.2006 в 10:28)   письмо автору
 
   для: Spenser   (11.07.2006 в 21:27)
 

ВСЕМ ОГРОМНОЕ СПАСИБО!!!
последний вопрос:
$_FILES['userfile']['size'] размер в смысле кб (или в чем?) или размер 100*100?
если в кб, то есть параметр для того чтобы узнать размер типа 100*100?
а в $_FILES['userfile']['type'] я могу проводить сравнение (например, если файл не gif то не загружать) и как это сделать?

   
 
 автор: Spenser   (12.07.2006 в 10:46)   письмо автору
 
   для: Spenser   (12.07.2006 в 10:28)
 

ВСЕМ ОГРОМНОЕ СПАСИБО!!!
последний вопрос:
$_FILES['userfile']['size'] размер в смысле кб (или в чем?) или размер 100*100?
если в кб, то есть параметр для того чтобы узнать размер типа 100*100?
а в $_FILES['userfile']['type'] я могу проводить сравнение (например, если файл не gif то не загружать) и как это сделать?

   
 
 автор: Lelik   (12.07.2006 в 10:54)   письмо автору
 
   для: Spenser   (12.07.2006 в 10:46)
 

>ВСЕМ ОГРОМНОЕ СПАСИБО!!!
>последний вопрос:
>$_FILES['userfile']['size'] размер в смысле кб (или в чем?)
>или размер 100*100?
>если в кб, то есть параметр для того чтобы узнать размер
>типа 100*100
размер файла в байтах
>а в $_FILES['userfile']['type'] я могу проводить сравнение
>(например, если файл не gif то не загружать) и как это
>сделать?

<?php
if($_FILES['userfile']['type']!= "gif")
  echo 
"Запрещенный тип фала";
?>

   
 
 автор: Spenser   (12.07.2006 в 11:10)   письмо автору
 
   для: Lelik   (12.07.2006 в 10:54)
 

а как узнать размер картинки, напрмер 100*100?

   
 
 автор: Lelik   (12.07.2006 в 11:11)   письмо автору
 
   для: Spenser   (12.07.2006 в 11:10)
 

в уме посчитать 100*100 = 10000

   
 
 автор: Spenser   (12.07.2006 в 11:17)   письмо автору
 
   для: Lelik   (12.07.2006 в 11:11)
 

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

   
 
 автор: valenok   (12.07.2006 в 12:41)   письмо автору
 
   для: Spenser   (12.07.2006 в 11:17)
 

GetImageSize

   
Rambler's Top100
вверх

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