We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

PHP - pobieranie pliku przez skrypt


slawek_cichon
30-09-2011, 00:31
Być może Twój edytor podczas zapisu pliku w utf8 dodaje 'dtz' na początku pliku czyli nagłówek BOM, wyłączenie zapisu z tym nagłówkiem powinno rozwiązać problem,

fenoms
10-09-2011, 10:35
Sprawdź czy nie masz jakichś "białych" znaków przed - dotyczy to wszystkich plików które są zaangażowane czyli główny i tych z include/require . W edytorze mogą się one nie wyświetlać. Jeśli się okaże że takie znaki się pojawiły w kodzie to koniecznie zmień edytor. Polecam też pominięcie końcowej sekwencji ?> - kod będzie działał a masz pewność ze nie dodadzą się białe znaki.

Widmo
13-08-2011, 11:16
a wklej tu adres do pliku, badz wystaw uszkodzony plik

Rysiu
11-08-2011, 21:45
Posiadam taki kod:

Kod PHP:


        
require "connection.php";

        
connection(); 
        
mysql_query ("SET NAMES utf8");

        
$id $_GET['id'];


        
$wynik mysql_query("SELECT * FROM materialy WHERE ID = $id");
        
$r mysql_fetch_assoc($wynik);

        
$adr "upload/php_logo_2011-8-11_21:02:46.png";
        
$typ_pliku "image/png";
        
$nazwa_pliku "php.png";
        
//$actualsize = $r['ROZMIAR'];

        
header("Content-type: $typ_pliku");
        
header("Content-Disposition: attachment; filename=$nazwa_pliku");
        
//header("Content-Length: $actualsize"); 
        
@readfile($adr);



?>
Ma on umożliwić pobieranie pliku tylko zalogowanym użytkownikom (z kodu wyciąłem fragment weryfikujący czu user jest zalogowany).

Problem jednak polega na tym, że gdy pobieram jakiś plik (testowałem na kilku) to jest on zasysany na dysk, jednak zajmuje zawsze o 3 B więcej niż oryginał (sprawdzone na plikach graficznych).

Po próbie otwarcia pobranego pliku ukazuje się informacja, że jest on uszkodzony.

Ścieżki i wszystkie informacje o pliku są podane poprawnie.

Próbowałem także ustalić rozmiar pliku za pomocą Content-Length - wtedy rozmiar pobieranego pliku zgadza się, jednak cały czas jest on "uszkodzony".

Co może być problemem?