Привет, может ли кто-то показать на простом примере скрипт скачивания файла любого типа, и GIF типа, сделанный на PHP. кто не понял, это как на dump.ru
PHP: $img=file_get_contents("http://адрес к картинке"); $f=fopen("имя_картинки","w+"); fwrite($f,$img); fclose($f); тип того. вместо file_get_contents можно использовать это .
ооо спасибо а ты не подскажеш еще как что бы можно было файлы одного типа только загружать, ну или только картинки
ну банально так: PHP: <?php $type = 'jpg'; if(stristr($_FILES['filename']['type'], $type)) echo 'Ok'; else echo 'пшол вон'; ?>
ну я наверное не так объяснил опять там когда обзор идёт, что бы там были видны только фото. ну как тут: _http://xs.to/xs.php?h=xs230&d=08352&f=999999999928.jpg
лично у меня все файлы обзорит..тем более что мешает юзеру нажать на меню и вместо графических файлов выбрать "все файлы"...ты думаешь это панацея? нет... Делай массив, как подсказал тебе n-000
2.:EnoT:. выбери пункт "Multiple Files". я не против, но мне просто самому инетеснно как это делать, потому я и спросил, а вдруг когда-то пригодится
Такой вопрос. Попробовал скрипт rushter'a upload.php (он на предыдущей странице). Все работает отлично. Только вот вопрос. Какие права нужно поставить на каталог в который загружается файл, чтобы, например, если загрузят php-файл, он не исполнялся, а только скачивался? Ставил chmod 666 но тогда пишет ошибку и не загружает файл: Code: 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 как раз для этого...
читать файл построчно и искать строку '<?php' хоть медленно зато 100% эффективно, если short_open_tag = Off и asp_tags = Off
вот пост на котором есть код для загрузки изображений, по сути дела им можно загружать любые файлы, но для этого надо его чуток подредактировать /threadedpost865021.html#post865021
FileFusian v1.6 http://slil.ru/26159398 в свое время наткнулся на этот скрипт, перерабатывал под себя, настраиваться 5 минут
Итакс Начнем В свое время я задался проблемой аплода кучи файлов на сервер. Все бы хорошо, вот только хотелось грузить по 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"> </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_root, 0777); //ставим права скрипту чтобы он мог подгрузить картинки 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 ' <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 ' <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_root, 0555); //Снимаем права с директории до состояния "Разрешено пользоваться но не изменять" // После трудной работы класса БД мы грохаем обьект. if ($db_uploader){$db_uploader->freeresult();$db_uploader->close();} echo '</font><br>'; } ?> </td></tr> <tr valign="top"><td width="100"> </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"> File '; echo $ucounter; echo ':</td><td><input type="file" name="file'; echo $ucounter; //гененрируем поля с именами попорядку echo '" id="upload_field"></td></tr>'."\n"; $ucounter++; //+1 к счетчику сгенерированных имен полей } ?> <tr><td> </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>