Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[PHP] [Header] Auto pobieranie pobiera czarny plik.



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
aimon



Dołączył: 10 Lip 2011
Posty: 8
Skąd: Koło koła;]

PostWysłany: Czw Mar 10, 2016 6:43 am  OP    Temat postu: [PHP] [Header] Auto pobieranie pobiera czarny plik. Odpowiedz z cytatem Pisownia

Tworze prostą aplikacje do dodania znaków wodnych. Mam problem z autopobieraniem, wyrzuca mi czarne pliki ;/

Kod:

<?php

// >> UPLOAD <<
$plik_tmp = $_FILES['image']['tmp_name'];
$plik_nazwa = $_FILES['image']['name'];

$save_file = $plik_nazwa;


if(is_uploaded_file($plik_tmp)) {
     move_uploaded_file($plik_tmp, ''.$save_file.'');  



// TWORZENIA ZNAKU WODNEGO
$znak = imagecreatefrompng('watermark.png'); // plik który będzie dodany na obraz 03.jpg
$img = imagecreatefromjpeg($save_file); // plik na który będzie nałożony znak downy czyli plik Obrazek1.png

$plik_w = imagesx($img); // szerokość pliku 03.jpg
$plik_h = imagesy($img); // wysokość pliku 03.jpg

$znaczek_w = imagesx($znak); // szerokość znaczka Obrazek1.png
$znaczek_h = imagesy($znak); // wysokość znaczka Obrazek1.png


$od_x = $plik_w - $znaczek_w; // Wyznaczanie położenie w tym przypadku br czyli dolny prawy róg
$od_y = $plik_h - $znaczek_h; // Wyznaczanie położenie w tym przypadku br czyli dolny prawy róg


imagecopy($img, $znak, $od_x, $od_y, 0, 0, $znaczek_w, $znaczek_h); // Kopiuje i nakłada na obraz znak downy


if(imagejpeg($img, $save_file, 100))
{    
    echo "<img src = $save_file > <br>";
    echo "<p>W ciągu kilku sekund powinno rozpocząć się pobieranie pliku. Jeśli pobieranie nie rozpoczęło się automatycznie, proszę kliknąć na ten <a href='".$save_file."'>link</a></p>";
    


    $fileName = $save_file; // np. program.exe

    $fd = fopen(fileName,"r");
    $size = filesize($fileName);
    $contents = fread($fd, filesize($fileName));

    fclose($fd);

    header ("Content-type: image/jpeg");
    header("Content-Length: $size;");
    header("Content-Disposition: attachment; filename=$fileName");

    echo $contents;
    

}

}
?>
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Luke



Dołączył: 17 Cze 2007
Posty: 1893
Skąd: Szczecin

PostWysłany: Czw Mar 10, 2016 1:01 pm      Temat postu: Odpowiedz z cytatem Pisownia

Kod:
echo "<img src = $save_file > <br>";
    echo "<p>W ciągu kilku sekund powinno rozpocząć się pobieranie pliku. Jeśli pobieranie nie rozpoczęło się automatycznie, proszę kliknąć na ten <a href='".$save_file."'>link</a></p>";
    
    ...

    header ("Content-type: image/jpeg");
    header("Content-Length: $size;");
    header("Content-Disposition: attachment; filename=$fileName");

    echo $contents;


I tak dziwne, że nie masz błędu "headers already sent". Możliwe, że na serwerze domyślnie jest włączone buforowanie.

Najpierw na wyjście wyrzucasz HTML-a, potem w nagłówkach wysyłasz informację, że jednak będzie szedł załącznik do pobrania, potem wyrzucasz zawartość załącznika. W tym problem, że przeglądarka pobiera jako załącznik wszystko, co zostało przesłane, czyli również wcześniej wyrzucony kod HTML.

BTW. Kod wygląda jak miks różnych poradników.

_________________
Moje projekty | Endless Horse Run game
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.08792 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |