Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Skrypt do pobierania plików
q3d
post 23.11.2016, 12:06:28
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


Pewne pliki: (jpg, pdf, archiwa .zip) chciałbym pobierać z serwera ale nie bezpośrednio tworząc odsyłacze ale poprzez skrypt (lokalizacja plików powyżej katalogu głównego serwisu). W tym celu wykorzystuje funkcję:
  1. function download_document($page) {
  2. $path = BASE_DOCS_URI.$page['url'][1][6].'/'.$page['id'];
  3. $fullPath = $path.'/'.$page['url'][1][7];
  4.  
  5. if ($fd = fopen ($fullPath, "r")) {
  6. $fsize = filesize($fullPath);
  7. $path_parts = pathinfo($fullPath);
  8. $ext = strtolower($path_parts["extension"]);
  9.  
  10. switch ($ext) {
  11. case "pdf":
  12. header("Content-type: application/pdf"); // add here more headers for diff. extensions
  13. header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
  14. break;
  15. case "jpg":
  16. header("Content-type: application/jpg"); // add here more headers for diff. extensions
  17. header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
  18. break;
  19. default;
  20. header("Content-type: application/octet-stream");
  21. header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
  22. }
  23. header("Content-length: $fsize");
  24. header("Cache-control: private"); //use this to open files directly
  25. while(!feof($fd)) {
  26. $buffer = fread($fd, 2048);
  27. echo $buffer;
  28. }
  29. }
  30. fclose ($fd);
  31. }


Dla dokumentów pdf jest ok.

Problem dotyczy plików zdjęć (.jpg). Niezależnie czy pobrany plik wyświetle w programie do przeglądania obazów czy też w zapiszę lokalnie, a następnie wyświetlę otrzymuje błąd:
"Not a JPEG file: starts with 0x0d 0x0a".

Plik przekopiowany przez FTP lub przeniesiony do katalogu tak by umożliwić do niego dostęp z poziomu adresu przeglądarki internetowej wyświetla się jednak poprawnie. Czyli plik nie jest uszkodzony i jak sądzę zostaje uszkodzony w momencie przesyłania.

Co gorsza błąd występuje wyłącznie gdy pobieram plik z serwera produkcyjnego. Na moim localhoscie pobierane w ten sposób pliki graficzne wyświetlają się poprawnie.

Jakieś sugestie?
Go to the top of the page
+Quote Post

Posty w temacie


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 - 06:11