Гость
Покинул форум
Сообщений всего: 77
Дата рег-ции: Май 2011
Помог: 0 раз(а)
|
Всем доброго времени суток! В общем такое дело...делаю загрузчик для сайта с базой загруженных файлов, на сей момент он загружает файл, переименовывает его (crypt()'ом), сохраняет его на диск и выдает ссылку на него 'http://my_site/upload/files/`physical_name`'
в базу записывает следующую инфу:
CODE ( htmlphp):
скопировать код в буфер обмена
CREATE DATABASE `load` ; CREATE TABLE `load` .` file` ( `id` INT NOT NULL AUTO_INCREMENT , //id `real_name` VARCHAR( 255 ) NOT NULL , //имя файла, которое было загружено в форму `physical_name` VARCHAR( 255 ) NOT NULL, //имя файла, который сохранен на сервере `size` INT NOT NULL , //размер файла ) ENGINE = MYISAM ;
мне бы хотелось чтобы при вводе в адресную строку '../index.php?id=*' из базы бралось `physical_name` и пользователю отдавался файл с нормальным именем `real_name`.
Я знаю, ОНО существует, только не знаю как осуществить...
Помогите, кто чем сможет, очень need...
исходник: http://deadmopo3[dot]ru/download/file.php?id=10
сам скрипт с формой:
CODE ( htmlphp):
скопировать код в буфер обмена
<META HTTP-EQUIV="Content-Type"Content="text/html; Charset=Windows-1251"> Выберите файл (не более upload_max_filesize в php.ini) и расширение.<br> Имя файла может состоять только из цифр и символов английского алфавита!<br> Внимание!Загрузить можно только файлы с расширениями из выпадающего списка!<br><br> <form enctype="multipart/form-data" method="post"> <input type="file" name="userfile" style="border: #f00 dashed 1px" > <select name=ext size=1> <option value='.mp3'>.mp3</option> <option value='.3gp'>.3gp</option> <option value='.mp4'>.mp4</option> <option value='.jpg'>.jpg</option> <option value='.jpeg'>.jpeg</option> <option value='.png'>.png</option> <option value='.gif'>.gif</option> </select><br> <input type="image" src="style/upload.png" value=" " name="button"> <input type="image" src="style/reset.png" value=" " name="reset"> </form> <?php if (isset($_POST['ext'])) $_POST['ext']; //Выполняем код только при нажатии на кнопку if($_POST['button']== true){ echo "Без паники, загрузка может длиться до нескольких минут....<br>"; //Для начала проверим не пытаются ли нам загрузить файл с расширением .php и т.д $path = array(".php",".php4",".php3",".phtml",".pl",".tga",".tif",".tiff",".c",".cpp",".cvs",".diz",".h",".hpp",".ini",".js",".log",".xml",".ai",".doc",".docx",".dot",".dotm",".dotx",".odg",".odp",".ods",".odt",".pdf",".ppt",".pptm",".pptx",".ps",".rtf",".txt",".xls",".xlsb",".xlsm",".xlsx",".ram",".rm",".wmv",".swf",".3g2",".m4a",".mov",".qt",".mpeg",".mpg",".ogg",".ogm",".exe",".7z",".ace",".bz2",".gtar",".gz",".rar",".tar",".tgz",".zip",".torrent",".wma"); foreach ($path as $item){ //Проверяем регулярным выражением регистр if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) { echo "Только расширения из выпадающего списка!!!<br>"; } if (preg_match("/[а-я_]+\./i",$_FILES['userfile']['name'])) {echo "Неверное имя файла!"; } $ext=$_POST['ext']; $size=$_FILES['userfile']['size']; $name=$_FILES['userfile']['name']; //Проверим на ошибки, если они есть прекращаем скрипт и создаем отчет if($_FILES['userfile']['error'] != 0){ //Создаем файл и записываем него код ошибки, а так же удаляем временный файл $error = fopen("error/error.dat","wb"); if(fwrite($error,$_FILES['userfile']['error']) == false){ echo "Ошибка записи в файл!!!"; }else { echo "<b>error.dat</b> - был успешно создан! <a href='error/error.inc'>Смотреть код ошибки</a>"; //Удаляем временный файл unlink($_FILES['userfile']['tmp_name']); //выходим } } mysql_query("INSERT INTO file2 (real_name,size) values ('$name','$size')"); //Определяем дерикторию, куда будем загружать изображения $pname = crypt($n.$_POST['ext']); $dir = 'files/'; mysql_query("update file2 set physical_name = '$pname' where id = $n"); echo "Файл успешно загружен.<br>"; echo "Ваш файл: "; echo '<a href="http://deadmopo3.ru/upload/'.$file.'">'.$name.'</a><br>'; } else { echo "Произошла ошибка"; } $query = "SELECT id, size FROM file2"; do { $i = $current_rec['id']; $myfile[$i]['size'] = $current_rec['size']; } if ($myfile[$i]['size']<=1023) { echo "Размер файла: "; echo $myfile[$n]['size']; echo " байт"; } if ($myfile[$i]['size']>=1024 && $myfile[$i]['size']<=1038090) {$x=($myfile[$i]['size'])/1024; echo "Размер файла: "; echo number_format($x, 2, '.', ''); echo " кб"; } elseif ($myfile[$i]['size']>=1038091) {$x=($myfile[$i]['size'])/1048576; echo "Размер файла: "; echo number_format($x, 2, '.', ''); echo " Мб"; } ?>
(Отредактировано автором: 25 Мая, 2011 - 14:12:48)
|