Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Obsługa plików, Jak pobrać plik z serwera na który wcześniej zostały wgrane?
przemysuaw
post 24.03.2014, 23:28:03
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.02.2013

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
ctom
post 24.03.2014, 23:34:19
Post #2





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/8485886...hp-using-header


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
przemysuaw
post 25.03.2014, 00:12:55
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.02.2013

Ostrzeżenie: (0%)
-----


Cytat(ctom @ 24.03.2014, 23:34:19 ) *


Jesteś wstanie w moim konkretnym przykładzie użyć ?
Go to the top of the page
+Quote Post
ctom
post 25.03.2014, 09:07:44
Post #4





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

Ostrzeżenie: (0%)
-----


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


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
przemysuaw
post 27.03.2014, 00:28:01
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.02.2013

Ostrzeżenie: (0%)
-----


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.'"');
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:25