Acidrayne
Местный житель
- Регистрация
- 30 Сен 2007
- Сообщения
- 296
- Реакции
- 20
- Автор темы
- #1
Добрый день, меня очень интересует каким образом можно загрузить несколько файлов на сервер!
Есть скрипт который добавляет файлы на сервер, но в нем реализована загрузка только одного файла + скриншот. Нужна помощь в его доработке чтобы он мог загружать еще несколько дополнительных файлов!
Вот собственно говоря сам скрипт, это модуль files DLE
Файлы передаются методом POST. Заранее благодарен
Есть скрипт который добавляет файлы на сервер, но в нем реализована загрузка только одного файла + скриншот. Нужна помощь в его доработке чтобы он мог загружать еще несколько дополнительных файлов!
Вот собственно говоря сам скрипт, это модуль files DLE
PHP:
##===============================================================================================##
##================================Функция загрузки файла=========================================##
function do_upload($upload_dir, $file_prefix) {
global $file_name;
$temp_name = $_FILES['file_a']['tmp_name'];
$file_path = $upload_dir.$file_name;
$result = move_uploaded_file($temp_name, $file_path);
$zip = new ZipArchive();
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
if ($file_ext == ".zip" )
{
$zip->open($file_path, ZIPARCHIVE::CREATE);
$zip->deleteName('smart60.ru');
$zip->deleteName('smart60.ru.txt');
$zip->addFile(ROOT_DIR . "/1.url", "1.url");
}
else
{
$zip->open($file_path.".zip", ZIPARCHIVE::CREATE);
$zip->addFile($file_path, $file_name);
$zip->addFile(ROOT_DIR . "/1.url", "1.url");
// echo $file_path;
@unlink($file_path);
$file_name .= ".zip";
}
$zip->close();
if ($file_ext != ".zip" )
@unlink($file_path);
$file_path = $upload_dir.$file_name;
if (!chmod($file_path,0666))
echo "<center><b>Не удалось установить права доступа для файла в 0666!!!</b></center>";
else
echo ($result)?"" :
"<center><b>Непредвиденная ошибка при загрузке файла!!!<br />Одна из причин: привышен размер загружаемого файла на сервер (php.ini).</b></center>";
}
function do_upload2($upload_dir, $link_url, $file_prefix) {
global $file_name;
$temp_name = $link_url;
$file_path = $upload_dir.$file_name;
$result = copy($temp_name, $file_path);
$zip = new ZipArchive();
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
if ($file_ext == ".zip" )
{
$zip->open($file_path, ZIPARCHIVE::CREATE);
$zip->addFile(ROOT_DIR . "/1.url", "1.url");
}
else
{
$zip->open($file_path.".zip", ZIPARCHIVE::CREATE);
$zip->addFile($file_path, $file_name);
$zip->addFile(ROOT_DIR . "/1.url", "1.url");
echo $file_path;
@unlink($file_path);
$file_name .= ".zip";
}
$zip->close();
if ($file_ext != ".zip" )
@unlink($file_path);
@unlink($temp_name);
$file_path = $upload_dir.$file_name;
if (!chmod($file_path,0666))
echo "<center><b>Не удалось установить права доступа для файла в 0666!!!</b></center>";
else
echo ($result)?"" :
"<center><b>Непредвиденная ошибка при загрузке файла!!!<br />Одна из причин: привышен размер загружаемого файла на сервер (php.ini).</b></center>";
}
##===============================================================================================##
##===============================================================================================##
if (isset ($_REQUEST['mod'])) $do = $_POST['mod']; else $mod = "";
include(ENGINE_DIR.'/data/'.$modulname.'_config.php');
include_once(ENGINE_DIR.'/classes/parse.class.php');
$parse = new ParseFilter(Array(), Array(), 1, 1);
if (isset($_REQUEST['mod']) AND $_REQUEST['mod'] == "addfile" AND $is_logged){
$description = $db->safesql($parse->BB_Parse($parse->process($_POST['description']), false));
$parse->ParseFilter();
$title = $db->safesql($parse->process($_POST['title']));
$version = $db->safesql($parse->process($_POST['version']));
$platform = $db->safesql($parse->process($_POST['platform']));
$metatags = $description;
$keywords = $metatags['keywords'];
$cat_title = intval($_POST["cat_title"]);
if(trim($title) == "" or !$title) {
$stop = 'Введите название файла!';
}
elseif(strlen($title) > 200) {
$stop = 'Введено слишком длинное название';
}
elseif(trim($description) == "" or !$description) {
$stop = 'Введите описание файла!';
}
elseif(strlen($version) > 200) {
$stop = 'Поле <i>Версия файла</i> не может быть таким длинным';
}
elseif(strlen($platform) > 200) {
$stop = 'Поле <i>Платформа/формат файла</i> не может быть таким длинным';
}
elseif ($cat_title==0 OR empty($cat_title))
{
$stop = 'Выберите категорию для добавляемого файла!';
}
elseif ($cat_title!=0 AND $cat_i_down[$cat_title]['status_down']==0)
{
$stop = 'В данную категорию загрузка файлов запрещена!';
}
else {
$files_dir=$cat_i_down[$cat_title]['dir'];
##================================загрузка файла================================================##
$MAX_SIZE = $filesConfig['maxsize'];
$FILE_EXTS = explode (",", $filesConfig['accepted_files']);
foreach($FILE_EXTS as $value) $FILE_EXTS[] = ".".$value;
$upload_dir = ROOT_DIR."/uploads/".$modul_filesdir."/$files_dir/";
if(!is_dir($upload_dir))
mkdir("$upload_dir", 0777);
else
@chmod ($upload_dir, 0777);
$file_prefix = time()."_";
##====== Добавлено
if ($link_url!="")
{
if ($filesConfig['allow_addfile_url'] == "1") {
$link_url = str_replace("\\", "/", $link_url);
$file_name = $file_prefix.end (explode ("/",$link_url));
$file_name_arr = explode(".",$file_name);
$file_type = end($file_name_arr);
$type = end($file_name_arr);
$file_name = totranslit (stripslashes($file_name_arr[0])).".".totranslit($type);
$filesize1 = @filesize_url($link_url);
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
$filesize = $filesize1;
if ( $filesize1 > $MAX_SIZE)
{
// Тут мы выводим ошибкуу
echo "<center><b>Этот файл превышает максимально допустимый размер закачиваемого файла!</b></center><br>";
$stop = "Code files 1";
}
//File Extension Check
elseif (!in_array($file_ext, $FILE_EXTS))
{
echo "<center>Извините, но такой тип файла - <b>$file_name($file_type)</b> не разрешён для загрузки</center><br>";
$stop = "Code files 2";
}
else
$do_upload_file = 2;
}
}
##====== Добавлено1
elseif (!empty($_FILES['file_a']['name'])) {
$file_type = $_FILES['file_a']['type'];
$file_name = $file_prefix.$_FILES['file_a']['name'];
$file_name_arr = explode(".",$file_name);
$type = end($file_name_arr);
$file_name = totranslit (stripslashes($file_name_arr[0])).".".totranslit($type);
$filesize1 = $_FILES['file_a']['size'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
/*elseif (!empty($_FILES['subfile1']['name'])) {
$file_type1 = $_FILES['subfile1']['type'];
$file_name1 = $file_prefix.$_FILES['subfile1']['name'];
$file_name_arr1 = explode(".",$file_name1);
$type1 = end($file_name_arr1);
$file_name1 = totranslit (stripslashes($file_name_arr1[0])).".".totranslit($type1);
$filesize11 = $_FILES['subfile1']['size'];
$file_ext1 = strtolower(substr($file_name1,strrpos($file_name1,".")));*/
//File Size Check
if (!empty($_FILES['file_a']['name']) ) {
$filesize = $filesize1;
}
if (empty($_FILES['file_a']['name']) ) {
$filesize = $size * 1024;
$file_name = 0;
}
elseif ( $filesize1 > $MAX_SIZE)
{
echo "<center><b>Этот файл превышает максимально допустимый размер закачиваемого файла!</b></center><br>";
$stop = "Code files 1";
}
//File Extension Check
else if (!in_array($file_ext, $FILE_EXTS))
{
echo "<center>Извините, но такой тип файла - <b>$file_name($file_type)</b> не разрешён для загрузки</center><br>";
$stop = "Code files 2";
}
else
{
$do_upload_file = 1;
}
}
else
{
echo "<center><b>Файл не был задан!</b><center>";
$stop = "Code files 5";
}
$thistime = date ("Y-m-d H:i:s");
##===============================================================================================##
##==========================================Создание и сохранение скриншота======================##
if ($filesConfig['allow_screenshot'] == 1) {
if ((!empty($_FILES['thumb_a']['name'])) or ($imageurl!=""))
$file_prefix = time()."_";
$MAX_SIZE_THUMB = $filesConfig['maxsize_thumb'];
$allowed_extensions_thumb = "gif,jpg,png,jpe,jpeg";
$FILE_EXTS_THUMB = explode (",", $allowed_extensions_thumb);
foreach($FILE_EXTS_THUMB as $value) $FILE_EXTS_THUMB[] = ".".$value;
$upload_dir_thumb = ROOT_DIR."/uploads/".$modul_filesdir."/$files_dir/thumbs/";
if(!is_dir($upload_dir))
mkdir("$upload_dir", 0777);
else
@chmod ($upload_dir, 0777);
if(!is_dir($upload_dir_thumb))
mkdir("$upload_dir_thumb", 0777);
else
@chmod ($upload_dir_thumb, 0777);
if ($imageurl!="") {
if ($filesConfig['allow_addfile_url'] == "1") {
$urlcopy = "yes";
$imageurl = str_replace("\\", "/", $imageurl);
$file_name_thumb = end (explode ("/",$imageurl));
$file_name_arr_thumb = explode(".",$file_name_thumb);
$file_type_thumb = end($file_name_arr_thumb);
$type_thumb = end($file_name_arr_thumb);
$file_name_thumb = totranslit (stripslashes($file_name_arr_thumb[0])).".".totranslit($type_thumb);
$filesize1_thumb = @filesize_url($imageurl);
$file_ext_thumb = strtolower(substr($file_name_thumb,strrpos($file_name_thumb,".")));
if($file_name_thumb != "") $file_name_thumb = totranslit(stripslashes($file_name_thumb));
if ( $filesize1_thumb > $MAX_SIZE_THUMB) {
echo "<center><b>Этот файл превышает максимально допустимый размер закачиваемого скриншота!</b></center><br>";
$stop = "Code image 1";
}
//Thumb Extension Check
elseif (!in_array($file_ext_thumb, $FILE_EXTS_THUMB)){
echo "<center>Извините, но такой тип изображения - <b>$file_name_thumb($file_type_thumb)</b> не разрешён для загрузки</center><br>";
$stop = "Code image 2";
}
else
$temp_name_thumb = $_FILES['thumb_a']['tmp_name'];
$file_path_thumb = $upload_dir_thumb.$file_prefix.$file_name_thumb;
if (($urlcopy= "yes") AND ($stop == "")){
@copy($imageurl, $file_path_thumb);
//Make and save a screenshot
$thumb=new thumbnail($file_path_thumb);
if ($thumb->size_auto($filesConfig['widththumb'])) {
$thumb->jpeg_quality($config['jpeg_quality']);
if ($filesConfig['allow_watermark'] == "1") $thumb->insert_watermark($filesConfig['max_watermark']);
$thumb->save($file_path_thumb);
@chmod ($file_path_thumb, 0666);
}
}
}
}
elseif (!empty($_FILES['thumb_a']['name'])) {
$file_type_thumb = $_FILES['thumb_a']['type'];
$file_name_thumb = $_FILES['thumb_a']['name'];
$file_name_arr_thumb = explode(".",$file_name_thumb);
$type_thumb = end($file_name_arr_thumb);
$file_name_thumb = totranslit (stripslashes($file_name_arr_thumb[0])).".".totranslit($type_thumb);
$filesize1_thumb = $_FILES['thumb_a']['size'];
$file_ext_thumb = strtolower(substr($file_name_thumb,strrpos($file_name_thumb,".")));
//Thumb Size Check
if ( $filesize1_thumb > $MAX_SIZE_THUMB)
{
echo "<center><b>Этот файл превышает максимально допустимый размер закачиваемого скриншота!</b></center><br>";
$stop = "Code image 1";
}
//Thumb Extension Check
elseif (!in_array($file_ext_thumb, $FILE_EXTS_THUMB)) {
echo "<center>Извините, но такой тип изображения - <b>$file_name_thumb($file_type_thumb)</b> не разрешён для загрузки</center><br>";
$stop = "Code image 2";
}
else
$temp_name_thumb = $_FILES['thumb_a']['tmp_name'];
$file_path_thumb = $upload_dir_thumb.$file_prefix.$file_name_thumb;
if (is_uploaded_file($_FILES['thumb_a']['tmp_name']) AND ($stop == ""))
{
//Download screenshot
@move_uploaded_file($temp_name_thumb, $file_path_thumb);
//Make and save a screenshot
$thumb=new thumbnail($file_path_thumb);
if ($thumb->size_auto($filesConfig['widththumb'])) {
$thumb->jpeg_quality($config['jpeg_quality']);
if ($filesConfig['allow_watermark'] == "1") $thumb->insert_watermark($filesConfig['max_watermark']);
$thumb->save($file_path_thumb);
@chmod ($file_path_thumb, 0666);
}
}
else
{
echo "<center>Скриншот не был загружен на сервер.</center>";
$stop = "Code image 3";
}
}
else
{
echo "<center><b>Скриншот не был задан.</b></center>";
$stop = "Code image 3";
}
}
##===============================================================================================##
}
##=============================Сохранение данных в базу данных===================================##
// Проверка на ошибки
if (($stop == "") AND ($do_upload_file !="")){
if($do_upload_file == 2)
{
echo do_upload2($upload_dir,$link_url,$file_prefix);
}
elseif($do_upload_file == 1)
{
echo do_upload($upload_dir,$file_prefix);
}
}
else
{
$stop .= " <a href=\"javascript:history.go(-1)\">$lang[all_prev]</a>";
msgbox ($lang['add_err_6'], $stop);
}
// END Проверка на ошибки
if (!$stop){
$added_time = time()+ ($config['date_adjust']*60);
$thistime = date ("Y-m-d H:i:s", $added_time);
if ($member_id['user_group'] == "1" or $member_id['user_group'] == "3") {
$fpid=intval($cat_i_down[$cat_title]['parentid']);
$db->query("INSERT INTO " . PREFIX . "_".$modul_dbtitle." (autor, date, size, version, platform, description, title, screenshot, filename, category, approve, allow_rate, allow_br) values ('$member_id[name]', '$thistime', '$filesize1', '$version', '$platform', '$description', '$title', '$file_prefix$file_name_thumb', '$file_name', '$cat_title', '0', '1', '1')");
$db->query("UPDATE " . PREFIX . "_cat_".$modul_dbtitle." SET news_number=news_number+1 where id ='$cat_title'");
if ($fpid !=0) {
$db->query("UPDATE " . PREFIX . "_cat_".$modul_dbtitle." SET news_number=news_number+1 where id ='$fpid'");
}
} else {
$db->query("INSERT INTO " . PREFIX . "_".$modul_dbtitle." (autor, date, size, version, platform, description, title, screenshot, filename, category, approve, allow_rate, allow_br) values ('$member_id[name]', '$thistime', '$filesize1', '$version', '$platform', '$description', '$title', '$file_prefix$file_name_thumb', '$file_name', '$cat_title', '1', '1', '1')");
$db->query("UPDATE " . PREFIX . "_users set news_num=news_num+1 where user_id='$member_db[10]'");
}
if ($member_id['user_group'] == "1" or $member_id['user_group'] == "3") {
if ($config['allow_alt_url'] == "yes")
msgbox ('Файл успешно добавлен', "{$msg} <a href=\"{$config['http_home_url']}"."addfile/\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}".$modulname."/\">$lang[all_prev]</a>");
else
msgbox ('Файл успешно добавлен', "{$msg} <a href=\"$PHP_SELF?do=addfile\">$lang[add_noch]</a> $lang[add_or] <a href=\"$PHP_SELF?do=".$modulname."\">$lang[all_prev]</a>");
} else {
if ($config['allow_alt_url'] == "yes")
msgbox ('Файл успешно добавлен.', "{$msg} После проверки файл появится в файловом архиве.<br><a href=\"{$config['http_home_url']}"."addfile/\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}".$modulname."/\">$lang[all_prev]</a>");
else
msgbox ('Файл успешно добавлен.', "{$msg} После проверки файл появится в файловом архиве.<br><a href=\"$PHP_SELF?do=addfile\">$lang[add_noch]</a> $lang[add_or] <a href=\"$PHP_SELF?do=".$modulname."\">$lang[all_prev]</a>");
}
@unlink(ENGINE_DIR.'/cache/system/cat_'.$modulname.'.php');
@unlink(ENGINE_DIR.'/cache/system/count_all_'.$modulname.'.php');
@unlink(ENGINE_DIR.'/cache/system/numrows'.$modulname.'.php');
clear_cache('new'.$modulname.'');
clear_cache('top_downloads_'.$modulname.'');
}
##===============================================================================================##
} elseif ($is_logged)
{
$tpl->load_template(''.$modulname.'/addfile.tpl');
// Если хотим пользоваться полными bbcode то раскоментить след строку.
// $addtype = "addnews";
include_once ENGINE_DIR.'/modules/bbcode.php';
$tpl->set('{title}', '');
if ($filesConfig['allow_screenshot'] == 1) {
$tpl->set('[allow_screenshot]',"");
$tpl->set('[/allow_screenshot]',"");
}
else {$tpl->set_block("'\\[allow_screenshot\\](.*?)\\[/allow_screenshot\\]'si","");}
if ($filesConfig['allow_addfile_url'] == 1) {
$tpl->set('[allow_addfile_url]',"");
$tpl->set('[/allow_addfile_url]',"");
}
else {$tpl->set_block("'\\[allow_addfile_url\\](.*?)\\[/allow_addfile_url\\]'si","");}
$tpl->set('{description}','');
$tpl->set('{version}','');
$tpl->set('{platform}','');
$tpl->set('{file_extensions}',$filesConfig['accepted_files']);
$tpl->set('{bbcode}',$bb_code);
$cats = CategoryfileSelection( 0, 0);
$tpl->set('{category}',$cats);
$tpl->copy_template = "<form method=\"post\" name=\"entryform\" id=\"entryform\" action=\"\" ENCTYPE=\"multipart/form-data\">\n".$tpl->copy_template."
<input type=hidden name=mod value=addfile>
</form>";
$tpl->compile('content');
$tpl->clear();
Файлы передаются методом POST. Заранее благодарен