Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obsługa plików
Forum PHP.pl > Forum > PHP
przemysuaw
Witam.

Problem jest następujący.

Wgrywam pliki na serwer i wyświetlam tabelę z odnośnikami do nich.
Zapisując je na serwerze zmieniam nazwę, żeby pliki o tych samych nazwach się nie nadpisywały (nazwa to kolejny nr klucza głównego w tabeli "pliki" np. 1, 2, 3, itd.)

Naciskając na link w tabeli plik zaczyna się pobierać, zgodnie z zamysłem, ale pobiera się plik o nazwie np. 1, 2, 3.
Jak przed pobraniem zmienić nazwę pliku na np. Umowa.pdf ?

  1. if (is_uploaded_file($_FILES['upload']['tmp_name'])) {
  2. if (move_uploaded_file($_FILES['upload']['tmp_name'],$temp="../uploads/".md5($_FILES['upload']['name']))) {
  3. echo '<p> Plik został załadowany </p>';
  4. }
  5. $q="INSERT INTO plik (nazwa_pliku, data_pliku) VALUES ('$name', NOW())";
  6. $r=mysqli_query($dbc,$q);
  7. if (mysqli_affected_rows($dbc)==1) {
  8. $plik_id=mysqli_insert_id($dbc);
  9. rename($temp,"../uploads/$plik_id");
  10. } else {
  11. echo '<span style=color:red;>Nie wstawiono do bazy.</span>';
  12. }
  13.  
  14. } else {
  15. echo'<span style=color:red;>Nie załadował się plik.</span>';
  16. }


Próbowałem z rename, ale nie wychodzi

  1. $q="SELECT plik_id, nazwa_pliku, data_pliku FROM plik ORDER BY data_pliku DESC";
  2. $r=mysqli_query($dbc,$q);
  3. $num=mysqli_num_rows($r);
  4. if ($num>0) {
  5. echo'<table>
  6. <th>
  7. <tr>
  8. <td>Nazwa pliku</td>
  9. <td>Data wstawienia</td>
  10. </tr>
  11. </th>';
  12. while ($row=mysqli_fetch_array($r, MYSQLI_ASSOC)) {
  13. <tr>
  14. <td align="left"><a href="../uploads/'.$plik=rename($row['plik_id'], $row['nazwa_pliku']).'">'.$row['nazwa_pliku'].'</a></td>
  15. <td align="left">'.$row['data_pliku'].'</td>
  16. </tr>';
  17. }
  18. echo'</table>';
  19. } else {
  20. echo '<span style=color:red;>Nie ma wyników </span>';
  21. }
przemysuaw
Cytat(ctom @ 24.03.2014, 23:34:19 ) *


Jesteś wstanie w moim konkretnym przykładzie użyć ?
ctom
Cytat(przemysuaw @ 25.03.2014, 00:12:55 ) *
Jesteś wstanie w moim konkretnym przykładzie użyć ?


ja tak :-)


podpowiedź:
zrób sobie plik odpowiedzialny za pobieranie plików np. getFile.php?id=XXXX i tam zaimplemetuj info z powyższego linka
przemysuaw
Cytat(ctom @ 25.03.2014, 09:07:44 ) *
ja tak :-)


podpowiedź:
zrób sobie plik odpowiedzialny za pobieranie plików np. getFile.php?id=XXXX i tam zaimplemetuj info z powyższego linka


Super smile.gif. Dzięki, działa, ale mam problem jeszcze w dwóch kwestiach:

1. header('Content-Type: text/plain'); - jak zrobić, by odczytywał odpowiedni rodzaj pliku, np pdf, xls, dxf. Próbowałem wpisać: header('Content-Type: text/plain, image/vnd.dxf, application/msword, application/pdf '), ale nie działa.

2. Przy zapisie pliku nie odczytuje mi spacji w nazwie pliku. W wywołaniu echo w pliku getfile jest pełna nazwa , ale podczas zapisywania nazwa to ciąg znaków, ale tylko do pierwszej spacji (plik: "projekt 2014.dxf", zapisuje: "projekt").



Ok poradziłem sobie smile.gif. Temat nieaktualny.

Gdyby ktoś szukał rozwiązania:

ad. 1 header('Content-Type: application/x-unknown');

ad. 2 header('Content-Disposition: attachment; filename="'.$nazwa_pliku.'"');
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.