Mam skrpyt view_php, który pokazyje pliki dodane do katalogu uploads znajdujacego się na serwerze.
  1. <?php # view_files.php
  2. // Strona pozwala u&iquest;ytkownikom przegl&plusmn;da&aelig; pliki umieszczone na serwerze.
  3.  
  4. // Ustawienie tytu&sup3;u strony i do&sup3;&plusmn;czenie nag&sup3;ówka HTML.
  5. $page_title = 'Przegl&plusmn;danie plików';
  6. include_once ('includes/naglowek.html');
  7.  
  8. require_once ('../mysql_connect.php'); // Po&sup3;&plusmn;czenie z baz&plusmn; danych.
  9.  
  10. $first = TRUE; // Inicjalizacja zmiennej.
  11.  
  12. // Wys&sup3;anie zapytania do bazy danych.
  13. $query = &#092;"SELECT upload_id, file_name, ROUND(file_size/1024) AS fs, description, DATE_FORMAT(upload_date, '%M %e, %Y') AS d FROM uploads ORDER BY upload_date DESC\";
  14. $result = mysql_query ($query);
  15.  
  16. // Wy&para;wietlenie wszystkich adresów URL.
  17. while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) {
  18.  
  19. // Je&para;li jest to pierwszy rekord, wtedy zostanie utworzona tabela header.
  20. if ($first) {
  21. echo '<table border=\"0\" width=\"100%\" cellspacing=\"3\" cellpadding=\"3\" align=\"center\">
  22. <tr>
  23. <td align=\"left\" width=\"20%\"><font size=\"+1\">Nazwa pliku</font></td>
  24. <td align=\"left\" width=\"40%\"><font size=\"+1\">Opis</font></td>
  25. <td align=\"center\" width=\"20%\"><font size=\"+1\">Rozmiar pliku</font></td>
  26. <td align=\"left\" width=\"20%\"><font size=\"+1\">Data umieszczenia</font></td>
  27. </tr>';
  28. } // Koniec p&ecirc;tli warunkowej ze zmienn&plusmn; $first.
  29.  
  30. // Wy&para;wietla wszystkie rekordy.
  31. echo &#092;" <tr>
  32. <td align=&#092;"left\"><a href=\"download_file.php?uid={$row['upload_id']}\">{$row['file_name']}</a></td>
  33. <td align=&#092;"left\">\" . stripslashes($row['description']) . \"</td>
  34. <td align=&#092;"center\">{$row['fs']}kb</td>
  35. <td align=&#092;"left\">{$row['d']}</td>
  36. </tr>n&#092;";
  37.  
  38. $first = FALSE; // Zwrócono jeden rekord.
  39.  
  40. } // Koniec p&ecirc;tli while.
  41.  
  42. // Je&para;li nie wy&para;wietlono &iquest;adnego rekordu...
  43. if ($first) {
  44. echo '<div align=\"center\">Aktualnie nie ma &iquest;adnego pliku.</div>';
  45. } else {
  46. echo '</table>'; // Zamkni&ecirc;cie tabeli.
  47. }
  48.  
  49. mysql_close(); // Zamkni&ecirc;cie po&sup3;&plusmn;czenia z baz&plusmn; danych.
  50. include_once ('includes/stopka.html'); // Do&sup3;&plusmn;czenie stopki HTML.
  51. ?>

Jest też plik download_file, który powinien pobierać pliki z serwera a zwraca jedynie że odnalezienie pliku było niemozliwe
  1. <?php # download_file.php
  2. // Strona pozwala na pobranie pliku z serwera 
  3.  
  4. if (is_numeric ($_GET['uid'])) { // Identyfikator pliku umieszczonego na serwerze.
  5.  
  6. require_once ('../mysql_connect.php'); // Po&sup3;&plusmn;czenie z baz&plusmn; danych.
  7.  
  8. // Pobranie informacji na temat pliku.
  9. $query = &#092;"SELECT file_name, file_type, file_size FROM uploads WHERE upload_id = {$_GE
    T['uid']}\";
  10. $result = mysql_query ($query);
  11. list ($fn, $ft, $fs) = mysql_fetch_array ($result, MYSQL_NUM);
  12. mysql_close(); // Zamkni&ecirc;cie po&sup3;&plusmn;czenia z baz&plusmn; danych.
  13.  
  14. // Okre&para;lenie nazwy pliku umieszczonego na serwerze.
  15. $extension = explode ('.', $fn);
  16. $the_file = '../uploads/' . $_GET['uid'] . '.' . $extension[1];
  17.  
  18. // Sprawdzenie czy plik istnieje.
  19. if (file_exists ($the_file)) {
  20.  
  21. // Wys&sup3;anie pliku.
  22. header (&#092;"Content-Type: application/$ft\");
  23. header (&#092;"Content-disposition: attachment; filename=$fn\");
  24. header (&#092;"Content-Length: $fs\");
  25. readfile ($the_file);
  26.  
  27. $message = '<p>Plik zosta&sup3; wys&sup3;any.</p>';
  28.  
  29. } else { // Plik nie istnieje.
  30. $message = '<p><font color=\"red\">Odnalezienie pliku na serwerze nie by&sup3;o mo&iquest;liwe. Przepraszamy za zaistnia&sup3;&plusmn; niedogodno&para;&aelig;.</font></p>'; 
  31. }
  32.  
  33.  
  34. } else { // Nieprawid&sup3;owy identyfikator pliku umieszczonego na serwerze.
  35.  
  36. $message = '<p><font color=\"red\">Prosz&ecirc; wybra&aelig; poprawny plik znajduj&plusmn;cy si&ecirc; na serwerze.</font></p>'; 
  37.  
  38. }
  39.  
  40. // Ustawienie tytu&sup3;u strony i do&sup3;&plusmn;czenie nag&sup3;ówka HTML.
  41. $page_title = 'Pobieranie pliku';
  42. include_once ('includes/naglowek.html');
  43.  
  44. echo $message;
  45.  
  46. include_once ('includes/stopka.html');
  47. ?>

plik do umieszczania plików wyglada tak:
  1. <?php # add_file.php
  2. // Strona pozwala u&iquest;ytkownikom umie&para;ci&aelig; pliki na serwerze.
  3.  
  4. // Ustawienie tytu&sup3;u strony i do&sup3;&plusmn;czenie nag&sup3;ówka HTML.
  5. $page_title = 'Umieszczanie pliku na serwerze';
  6. include ('includes/naglowek.html');
  7.  
  8. if (isset($_POST['submit'])) { // Obs&sup3;uga formularza.
  9.  
  10. require_once ('../mysql_connect.php'); // Po&sup3;&plusmn;czenie z baz&plusmn; danych.
  11.  
  12. // Funkcja usuwaj&plusmn;ca znak '/' i obcinaj&plusmn;ca dane wprowadzone w formularzu.
  13. function escape_data ($data) { 
  14. global $dbc;
  15. if (ini_get('magic_quotes_gpc')) {
  16. $data = stripslashes($data);
  17. }
  18. return mysql_real_escape_string (trim ($data), $dbc);
  19. } // Koniec sekcji funkcji escape_data().
  20.  
  21. // Sprawdzenie obecno&para;ci opisu (nie jest wymagane).
  22. if (!empty($_POST['description'])) {
  23. $d = escape_data($_POST['description']);
  24. } else {
  25. $d = '';
  26. }
  27.  
  28. // Dodanie rekordu do bazy danych.
  29. $query = &#092;"INSERT INTO uploads (file_name, file_size, file_type, description, upload_date) VALUES ('{$_FILES['upload']['name']}', {$_FILES['upload']['size']}, '{$_FILES['upload']['type']}', '$d', NOW())\";
  30. $result = @mysql_query ($query);
  31.  
  32. if ($result) {
  33.  
  34. // Utworzenie nazwy pliku.
  35. $extension = explode ('.', $_FILES['upload']['name']);
  36. $uid = mysql_insert_id(); // Identyfikator pliku umieszczanego na serwerze
  37. $filename = $uid . '.' . $extension[1];
  38.  
  39. // Przenoszenie pliku.
  40. if (move_uploaded_file($_FILES['upload']['tmp_name'], &#092;"..uploads$filename\")) {
  41. echo '<p>Plik zosta&sup3; umieszczony na serwerze!</p>';
  42. } else {
  43. echo '<p><font color=\"red\">Przeniesienie pliku nie by&sup3;o mo&iquest;liwe.</font></p>';
  44.  
  45. // Usuni&ecirc;cie rekordu z bazy danych.
  46. $query = &#092;"DELETE FROM uploads WHERE upload_id = $uid\";
  47. $result = @mysql_query ($query);
  48. }
  49.  
  50. } else { // Je&para;li zapytanie na bazie danych nie zostanie wykonane prawid&sup3;owo.
  51. echo '<p><font color=\"red\">Na skutek b&sup3;&ecirc;du systemowego wys&sup3;ane zapytanie nie mog&sup3;o zosta&aelig; przetworzone. Przepraszamy za zaistnia&sup3;&plusmn; niedogodno&para;&aelig;.</font></p>'; 
  52. }
  53.  
  54. mysql_close(); // Zamkni&ecirc;cie po&sup3;&plusmn;czenia z baz&plusmn; danych.
  55.  
  56. } // Koniec instrukcji warunkowej obs&sup3;uguj&plusmn;cej dane wprowadzane w formularzu.
  57. ?>
  58.  
  59. <form enctype=\"multipart/form-data\" action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" method=\"post\">
  60.  
  61. <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"524288\">
  62.  
  63. <fieldset><legend>W celu umieszczenia pliku na serwerze nale&iquest;y wype&sup3;ni&aelig; formularz:</legend>
  64.  
  65. <p><b>Plik:</b> <input type=\"file\" name=\"upload\" /></p>
  66.  
  67. <p><b>Opis:</b> <textarea name=\"description\" cols=\"40\" rows=\"5\"></textarea></p>
  68.  
  69. </fieldset>
  70.  
  71. <div align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Wy&para;lij\" /></div>
  72.  
  73. </form><!-- Koniec formularza-->
  74.  
  75. <?php
  76. include ('includes/stopka.html'); // Do&sup3;&plusmn;czenie stopki HTML.
  77. ?>


Jak rozwiazać problem zpobieraniem plików przez ten skrypt download_file questionmark.gif
Prosze o pomoc