Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie plików z bazy MySql
nabuchodonozor_p...
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.09.2006

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


Napisałem system upload oparty na bazie MySQL (aby zachować bezpieczeństwo plików).
Skrypt bezbłędnie dodaje do bazy (i pozwala ściągać) wszystkie pliki graficzne, jednak, gdy dodam do bazy plik *.zip, *.rar, *.ace jego ściągnięcie jest niemożliwe.

Baza widzi wszystkie mniej "standardowe" pliki jako typ : application/octet-stream, co powoduje (jak mi się wydaje) nadpisanie złego nagłówka i de facto ściągnięcie pliku tekstowego (choć w rzeczywistości jest to np. .ace) .

Czy możliwy jest download tych "niestandardowych" plików z bazy MySQL ? Dlaczego PHP rozpoznaje typ tych plików zawsze jako "application/octet-stream" ?

Gdzie może być błąd ?


Skrypt UPLOAD :

  1. <?php
  2. $plik_tmp = $_FILES['plik']['tmp_name'];
  3. $plik_nazwa = $_FILES['plik']['name'];
  4. $plik_rozmiar = $_FILES['plik']['size'];
  5.  
  6. $plik_typ = $_FILES['plik']['type'];
  7.  
  8.  
  9. if(is_uploaded_file($plik_tmp)){
  10.  move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  11. if ($plik_rozmiar>0){
  12. $fileHandle = fopen("upload/$plik_nazwa", "r");
  13. $fileContent = fread($fileHandle, $plik_rozmiar);
  14. $fileContent = addslashes($fileContent);
  15. $z = "insert into files values(NULL, NULL, '".$_POST['uploaded']."','".$_POST['opis']."','".$fileContent."','".$plik_typ."','".$plik_nazwa."',".$plik_rozmiar.",'".$_SESSION['login']."')";
  16. unlink("upload/$plik_nazwa");
  17. }
  18. ?>


Skrypt DOWNLOAD :

  1. <?php
  2. $db = mysql_pconnect('###','###','###');
  3. $z = "select* from files where id=".$_REQUEST['id']." and ( adm='".$_SESSION['login']."' or adm='public' or adm='local')"; // w polu adm jest tylko właściciel pliku
  4. $w = mysql_query($z);
  5. $a = mysql_fetch_array($w);
  6. header("Content-type: ".$a['typ']);
  7.  echo $a['plik'];
  8. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 2.10.2025 - 00:43