Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите сделать UPLOADер

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: (переименование файла при скачке)
romario0403
Отправлено: 25 Мая, 2011 - 09:30:55
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Всем доброго времени суток! В общем такое дело...делаю загрузчик для сайта с базой загруженных файлов, на сей момент он загружает файл, переименовывает его (crypt()'ом), сохраняет его на диск и выдает ссылку на него 'http://my_site/upload/files/`physical_name`'

в базу записывает следующую инфу:

CODE (htmlphp):
скопировать код в буфер обмена
  1. CREATE DATABASE `load` ;
  2.  
  3. CREATE TABLE `load`.`file` (
  4. `id` INT NOT NULL AUTO_INCREMENT ,               //id
  5. `real_name` VARCHAR( 255 ) NOT NULL ,           //имя файла, которое было загружено в форму
  6. `physical_name` VARCHAR( 255 ) NOT NULL,      //имя файла, который сохранен на сервере
  7. `size` INT NOT NULL ,                                        //размер файла
  8. PRIMARY KEY ( `id` )
  9. ) ENGINE = MYISAM ;

мне бы хотелось чтобы при вводе в адресную строку '../index.php?id=*' из базы бралось `physical_name` и пользователю отдавался файл с нормальным именем `real_name`.

Я знаю, ОНО существует, только не знаю как осуществить... Огорчение
Помогите, кто чем сможет, очень need...

исходник: http://deadmopo3[dot]ru/download/file.php?id=10

сам скрипт с формой:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <META HTTP-EQUIV="Content-Type"Content="text/html; Charset=Windows-1251">
  2. Выберите файл (не более upload_max_filesize в php.ini) и расширение.<br>  
  3. Имя файла может состоять только из цифр и символов английского алфавита!<br>
  4. Внимание!Загрузить можно только файлы с расширениями из выпадающего списка!<br><br>
  5. <form enctype="multipart/form-data" method="post">
  6. <input type="file" name="userfile" style="border: #f00 dashed 1px" >
  7. <select name=ext size=1>
  8.  <option value='.mp3'>.mp3</option>
  9.  <option value='.3gp'>.3gp</option>
  10.  <option value='.mp4'>.mp4</option>
  11.  <option value='.jpg'>.jpg</option>
  12.  <option value='.jpeg'>.jpeg</option>
  13.  <option value='.png'>.png</option>
  14.  <option value='.gif'>.gif</option>
  15.  </select><br>
  16. <input type="image" src="style/upload.png" value=" " name="button">
  17. <input type="image" src="style/reset.png" value=" " name="reset">
  18. </form>
  19. <?php
  20. if (isset($_POST['ext'])) $_POST['ext'];
  21. //Выполняем код только при нажатии на кнопку
  22. if($_POST['button']== true){
  23. echo "Без паники, загрузка может длиться до нескольких минут....<br>";
  24. //Для начала проверим не пытаются ли нам загрузить файл с расширением .php и т.д
  25. $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");
  26. foreach ($path as $item){
  27. //Проверяем регулярным выражением регистр
  28.  if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) {
  29.   echo "Только расширения из выпадающего списка!!!<br>";
  30.   exit();
  31.  }
  32. if (preg_match("/[а-я_]+\./i",$_FILES['userfile']['name'])) {echo "Неверное имя файла!";
  33. exit();}
  34.  
  35. }
  36.  
  37. $ext=$_POST['ext'];
  38. $size=$_FILES['userfile']['size'];
  39. $name=$_FILES['userfile']['name'];
  40.  
  41.  
  42.  
  43.  
  44. //Проверим на ошибки, если они есть прекращаем скрипт и создаем отчет
  45. if($_FILES['userfile']['error'] != 0){
  46. //Создаем файл и записываем  него код ошибки, а так же удаляем временный файл
  47. $error = fopen("error/error.dat","wb");
  48. if(fwrite($error,$_FILES['userfile']['error']) == false){
  49.         echo "Ошибка записи в файл!!!";
  50.         exit();
  51. }else
  52. {
  53.         echo "<b>error.dat</b> - был успешно создан! &nbsp;&nbsp;<a href='error/error.inc'>Смотреть код ошибки</a>";
  54.         //Удаляем временный файл
  55.         unlink($_FILES['userfile']['tmp_name']);
  56.         //выходим
  57.         exit();
  58. }
  59. fclose($error);
  60. }
  61.  
  62. mysql_connect("localhost", "root", "password") or
  63.        die("Could not connect: " . mysql_error());
  64.    mysql_select_db(load);
  65.  
  66.    mysql_query("INSERT INTO file2 (real_name,size) values ('$name','$size')");
  67.  
  68. //Определяем дерикторию, куда будем загружать изображения
  69. $pname = crypt($n.$_POST['ext']);
  70. $dir = 'files/';
  71. $file = $dir.basename($pname);
  72.  
  73. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $file)) {
  74. mysql_query("update file2 set physical_name = '$pname' where id = $n");
  75.    echo "Файл успешно загружен.<br>";
  76.    
  77.    echo "Ваш файл: "; echo '<a href="http://deadmopo3.ru/upload/'.$file.'">'.$name.'</a><br>';
  78. }
  79. else {
  80.    echo "Произошла ошибка";
  81.    exit;}
  82. }
  83.  
  84.  
  85. $query = "SELECT id, size FROM file2";
  86. $result = mysql_query($query) or die("Couldn't execute query!");
  87. $current_rec = mysql_fetch_array($result);
  88. do {
  89. $i = $current_rec['id'];
  90. $myfile[$i]['size'] = $current_rec['size'];
  91. }
  92. while ($current_rec = mysql_fetch_array($result));
  93.  
  94.  
  95. if ($myfile[$i]['size']<=1023) {
  96. echo "Размер файла: "; echo $myfile[$n]['size']; echo " байт";
  97. }
  98.  
  99. if ($myfile[$i]['size']>=1024 && $myfile[$i]['size']<=1038090)  
  100. {$x=($myfile[$i]['size'])/1024;
  101. echo "Размер файла: "; echo number_format($x, 2, '.', ''); echo " кб";
  102. }
  103.  
  104. elseif ($myfile[$i]['size']>=1038091)
  105. {$x=($myfile[$i]['size'])/1048576;
  106. echo "Размер файла: "; echo number_format($x, 2, '.', ''); echo " Мб";
  107. }
  108. ?>

(Отредактировано автором: 25 Мая, 2011 - 14:12:48)

 
 Top
romario0403
Отправлено: 28 Мая, 2011 - 15:55:20
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB