Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [php] скипт загрузки (https://forum.antichat.xyz/showthread.php?t=82495)

X-FRITS 26.08.2008 22:05

[php] скипт загрузки
 
Привет, может ли кто-то показать на простом примере скрипт скачивания файла любого типа, и GIF типа, сделанный на PHP.

кто не понял, это как на dump.ru

mr.The 26.08.2008 22:43

PHP код:

$img=file_get_contents("http://адрес к картинке");
    
$f=fopen("имя_картинки","w+");
fwrite($f,$img);
fclose($f); 

тип того.
вместо file_get_contents можно использовать это .

X-FRITS 26.08.2008 23:24

я наверное не так объяснил, я имел ввиду, что загрузку с копма на сервер.

mr.The 26.08.2008 23:31

на вот читай: _ttp://www.softtime.ru/scripts/upload.php

X-FRITS 26.08.2008 23:56

ооо спасибо:) а ты не подскажеш еще как что бы можно было файлы одного типа только загружать, ну или только картинки:)

.:EnoT:. 27.08.2008 00:00

ну банально так:
PHP код:

<?php
$type 
'jpg';
if(
stristr($_FILES['filename']['type'], $type))
    echo 
'Ok';
else echo 
'пшол вон';
?>


n-000 27.08.2008 00:03

Цитата:

Сообщение от x-frits
ооо спасибо:) а ты не подскажеш еще как что бы можно было файлы одного типа только загружать, ну или только картинки:)

Нужно создать массив из расширений приемлемых для загрузки, ну и помудрить с примером выше -)

rushter 27.08.2008 00:14

форма
Код:

<form action="upload.php" method=post enctype=multipart/form-data>
<input type=file name=uploadfile>
<input type=submit value=Загрузить></form>

upload.php
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 
"<p><b>Ccылка на фаил: <a href='files/".$_FILES['uploadfile']['name']."'>скачать</a>";
?>


X-FRITS 27.08.2008 00:18

ну я наверное не так объяснил опять:) там когда обзор идёт, что бы там были видны только фото.

ну как тут:
_http://xs.to/xs.php?h=xs230&d=08352&f=999999999928.jpg

rushter 27.08.2008 00:27

с помощью js наверно
PS. смотри исходный код http://xs.to там всё есть :)

.:EnoT:. 27.08.2008 00:32

Цитата:

Сообщение от X-FRITS
ну я наверное не так объяснил опять:) там когда обзор идёт, что бы там были видны только фото.

ну как тут:
_http://xs.to/xs.php?h=xs230&d=08352&f=999999999928.jpg

лично у меня все файлы обзорит..тем более что мешает юзеру нажать на меню и вместо графических файлов выбрать "все файлы"...ты думаешь это панацея? нет...
Делай массив, как подсказал тебе n-000

X-FRITS 27.08.2008 00:51

2.:EnoT:. выбери пункт "Multiple Files". я не против, но мне просто самому инетеснно как это делать, потому я и спросил, а вдруг когда-то пригодится:)

n-000 27.08.2008 17:53

Тоесть ты хочеш зделать загрузку разных файлов, а где то отображать только фото ?

++Norton++ 11.09.2008 22:56

Такой вопрос. Попробовал скрипт rushter'a upload.php (он на предыдущей странице). Все работает отлично. Только вот вопрос. Какие права нужно поставить на каталог в который загружается файл, чтобы, например, если загрузят php-файл, он не исполнялся, а только скачивался? Ставил chmod 666 но тогда пишет ошибку и не загружает файл:
Код:

Warning: copy(./upload/best.c) [function.copy]: failed to open stream: Permission denied in /var/www/localhost/htdocs/upload.php on line 4
Хотя вроде chmod 666 как раз для этого...

rushter 11.09.2008 23:28

как вариант запретить upload php скриптов

++Norton++ 12.09.2008 00:01

Если можно поподробнее, как это лучше сделать?

imajo.ati 12.09.2008 17:35

Цитата:

Сообщение от ++Norton++
Если можно поподробнее, как это лучше сделать?

читать файл построчно и искать строку '<?php'

хоть медленно зато 100% эффективно, если short_open_tag = Off и asp_tags = Off

Jer1cho 12.09.2008 17:42

.htaccess:
PHP код:

RemoveType application/x-httpd-php .php .php5 .phtml 


winstrool 18.09.2008 12:02

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

http://forum.antichat.ru/threadedpost865021.html#post865021

Chode 19.09.2008 03:31

FileFusian v1.6 http://slil.ru/26159398

в свое время наткнулся на этот скрипт, перерабатывал под себя, настраиваться 5 минут

MasterMushi 19.09.2008 13:08

Итакс Начнем
 
В свое время я задался проблемой аплода кучи файлов на сервер. Все бы хорошо, вот только хотелось грузить по 10-20 файлов за раз. Было это нужно для создания картинной галереи и материала было очень много. Также хотелось чтобы картинки были с хорошо измененными именами сразу поставлены на регистрации в базу.

Первое с чем столкнулся - не каждый хостинг имеет инициализированной на фришном плане переменной $_ENV['tmp'] что в результате при любом использовании $_FILES выдает пустой результат. Второе - не было изначально задано папки на которую вела бы эта самая переменная. Папка и переменная нужны для сохранения временных файлов которые мы еще не обработали и не скопировали куда нужно.

Третье - это папка назначения. Такую папку на время аплода нужно chmod-ить до 766 а после аплода ставить возможность исполнения файлов (тоесть чтобы по клику на ссылку с картинкой картинка не выдавалась как ошибка доступа 403) опять таки не каждый фришных хостинг отрабатывает

Ну и последнее - масс аплоад. Поискав по сети я не нашел вразумительных обьяснений. Сделал проще - отработал форму как с массивом в динамике. Вот пример того что получилось:

PHP код:

<body><table border="0" cellpadding="0" cellspacing="2" align="left" >
 <tr valign="top"><td width="100">&nbsp;&nbsp;&nbsp;</td>
    <td>
    
<?php 
     $Gallery_root
='gallery/'// Задаем пусть к директории для сохранения результата
    //error_reporting(E_ALL); //  Эта строка нам поможет при отладке проблем с настройками сервера Как только все заработает - убираем нафиг
    
if (!empty($_POST["startupload"])) // Проверяем была ли кликнута кнопка начала загрузки
    

      echo 
'<font style="font-size: 12px;">'
      require_once(
'db.php');   // Запрашиваем класс для работы с базой данных
      
require_once("config.php");
      
$db_uploader = new DB($host,$user,$password,$database); //подключаемся к базе
      
if (!$db_uploader->open())    // Если не удалось то отваливаемся с ошибкой-описанием неудачи
         
{ die ($db_uploader->error());}
      
$fuploads=1// Счетчик  загружаемых файлов
      
chmod($Gallery_root0777);  //ставим права скрипту чтобы он мог подгрузить картинки
      
while ($fuploads <= $_POST["toupload"]) // Пока мы не отработали все файлы которые пришли с формы делаем следующее....
       
{
        
$ufilename='file'.$fuploads// Тут мы делаем имя для каждого поля динамической формы
        
if (!empty($_FILES[$ufilename]["name"]))  //  Если поле формочки не была пустыи и в нго запихнули файл тогда
            
{
            
              if (!
is_uploaded_file($_FILES[$ufilename]['tmp_name'])) { // Проверяем хорошо ли был загружен файл
                 
echo "File ".$_FILES[$ufilename]["name"]." had not been Uploaded<br>";} //Если нет тогда пишем о неудаче
                
else {  // А если файл был загружен на ура тогда делаем следующее
            
            
              
if($_FILES[$ufilename]["size"] > 1024*3*1024//Проверяем трехмеговый лимит размера файла (хостинги некоторые требуют)
                  
{
                     echo (
"File size exceeds maximum allowed (3.0Mb"); //И отваливаемся если перебор
                  
}
              else
                  {  
$finfilename=md5($_FILES[$ufilename]["tmp_name"]); //Кодируем шаблон на имя файла в чтото хешевое
                      
$finext=explode(".",$_FILES[$ufilename]["name"]); // Разбиваем загруженный файл на имя и расширение
                      
$finfilename=$finfilename.'.'.$finext[1]; //Убираем старое имя и складываем новое имя и расширение
                     
if(move_uploaded_file($_FILES[$ufilename]["tmp_name"],$Gallery_root.$finfilename)) // Перемещаем загруженный файл в галлерею
                      
{   
                         
$sql_qwery "insert into images_table (image_filename, uploaded_time, gallery_id) values ('".$finfilename."',".strtotime("now").", 0)";
                         
/*запрос тут для примера 
                            images_table - табличка в базе у которой 4 поля  
                            gallery_id - это айди в таблице с галлереями на которую назначим картинку для начала назначим ноль потом назначим все что надо
                            все остальное делается так:
create table images_table
(
        id     int unsigned not null auto_increment primary key,
          image_filename   char(50)
          gallery_id  int unsigned,
          uploaded_time        int unsigned
)  
  все достаточно просто.
                         */
                          
if (!$db_uploader->query($sql_qwery)) //Собственно делаем запрос на регистрацию загруженой картинки в базу
                               
{ echo '&nbsp;&nbsp;&nbsp;<font color="#880000"><b>Failed:</b> New image adding error</font><br>'//При ошибке в регистрации отваливаемся
                                 
die ($db_uploader->error()); }; 
                               
//Пишем что и куда мы запихнули
                                 
echo 'File: <b>';
                                 echo 
$_FILES[$ufilename]["name"];
                                 echo 
'</b> ( ';
                                 echo 
$_FILES[$ufilename]["type"];
                                 echo 
', ';
                                 echo 
$_FILES[$ufilename]["size"];
                                 echo 
"b) was uploaded to".$Gallery_root;
                                 echo 
' as <b>';
                                 echo 
$finfilename;
                                 echo 
"</b><br> \n";
      
                      } else  
//теперь в случае если картинку не удалось загрузить мы пишем об этом 
                        
echo '&nbsp;&nbsp;&nbsp;<font color="#880000"><b>Failed:</b> image upload error</font> Name: '.$_FILES[$ufilename]["name"].' <br> Temp name: '.$_FILES[$ufilename]["tmp_name"];
                      
                 }
            }
         } 
         
$fuploads++; //Докидываем +1 к счетчику загруженных файлов
       
}
      
      
chmod($Gallery_root0555);  //Снимаем права с директории до состояния "Разрешено пользоваться но не изменять"
     // После трудной работы класса БД мы грохаем обьект.   if ($db_uploader){$db_uploader->freeresult();$db_uploader->close();} 
    
echo '</font><br>';
    
    }
  
?>
    
    
    </td></tr>
 <tr valign="top"><td width="100">&nbsp;&nbsp;&nbsp;</td>
    <td>                         
     <font class="hilight">How many files do you want to upload?</font>
       <form action="index.php?page=galleryuploader" method="post">
          <table border="0" cellpadding="0" cellspacing="2" align="left">
          <tr>
           <td class="content" align="left" width="50">
             Range 1-30
           </td>
           <td>
            <input name="fcount" type="text" style="width:140px" 
            <?php
             $fcount
=10//Число полей по умолчанию
             
if (!empty($_POST["fcount"])) //Проверяем было ли задано новое число полей
               
$fcount=$_POST["fcount"]; //Если да то выставляем новый параметр в счетчик
                 
if (($fcount 0) && ($fcount 31))
                    echo 
'value="'.$fcount.'"';
                 else echo 
'value="10"';
               }
              else echo 
'value="'.$fcount.'"';
            
?>>
             </td>
            <td> 
               <input type="submit" name="setnumber" value="  Set  " style=" border-width:1px; color:#626754; background:#FFFFFF">
            </td>
            </tr>
          </table>
     </form>
     <br><br>
     <font class="hilight">Chose files from you PC</font>
     <form action="index.php?page=galleryuploader" method="post" enctype="multipart/form-data">
      <table class="content" width="270" height="12" border="0" cellpadding="0" cellspacing="1" bgcolor="#eeeeee" valign="top">
      <tr>
         <td align="center" bgcolor="#cccccc">###</td>
         <td align="center" bgcolor="#cccccc">Local file path</td>
      </tr>
<?php
      
$fcount
=10// Перестраховываемся по значению количества полей по умолчанию
if (!empty($_POST["fcount"])) //Если задано новое количество
      
$fcount=$_POST["fcount"]; //Назначаем
if (($fcount 1) || ($fcount 30)) $fcount=10
//Но не более 30ти файлов за раз (некоторые хостинги вообще только до 20ти файлов отрабатывают а некоторые и вообще по 2)
  
$ucounter=1//Счетчик для генерирования имен полей
  
while ($ucounter <= $fcount
    { 
//Пока не достигли предела разрешенного количества полей
      
echo '<tr valign="center"><td width="70" class="content" align="left">&nbsp;&nbsp;File ';
      echo 
$ucounter;
      echo 
':</td><td><input type="file" name="file';
      echo 
$ucounter//гененрируем поля с именами попорядку
      
echo '" id="upload_field"></td></tr>'."\n";
      
$ucounter++; //+1 к счетчику сгенерированных имен полей
    
}

?>
      <tr><td>&nbsp;</td><td align="left">
      <input type="hidden" name="toupload" value="<?php echo $fcount;?>">
      <input type="submit" name="startupload" value=" Upload " style=" border-width:1px; color:#626754; background:#FFFFFF; width: 185px;"></td>
      </tr>
      </table>
      </form>
    </td></tr>
    </table>
</body>



Время: 11:49