Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Problem z ściąganiem pliku
Maciekbjw
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 23
Dołączył: 2.12.2007
Skąd: Warszawa

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


Witam,
ostatnio napotkałem dosyć dziwny problem, googlowałem trochę i generalnie znalazłem jakieś tam rozwiązania, jednak nie działają one zawsze (np to: http://w-shadow.com/blog/2007/08/12/how-to...nload-with-php/ albo to: http://www.weberdev.com/get_example-4182.html oraz inne)

Aktualny kod:
  1. <?php
  2. public function getAction() {
  3.        
  4.        $id = (int) $this->_request->getParam('id');
  5.        $id_project = $this->_request->getParam('id_project');
  6.        $file = $this->project->getFile($id);
  7.        
  8.        $file = './files/projects/'.$id_project.'/'.$file['file'];
  9.        header("Pragma: public");
  10.        header("Expires: 0");
  11.        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  12.  
  13.        header("Content-Type: application/force-download");
  14.        header( "Content-Disposition: attachment; filename=".basename($file));
  15.  
  16.        header( "Content-Description: File Transfer");
  17.        @readfile($file);
  18.        
  19.    }
  20. ?>


Teraz tak, plik fizycznie istnieje i jest na serwerze, klikając w link do pobrania włącza się okienko z plikiem, niestety po 'pobraniu' plik ma 0 kb (czyli nie da się go odczytać)

Dodam tylko że problem istnieje z każdym testowanym typem plików (.doc,.jpg, .html itd.)

Jeśli ktoś spotkał się z podobnym problemem i zna jego rozwiązanie, to będę wdzięczny za odpowiedzi i wszelką pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdrawiam
Go to the top of the page
+Quote Post
krowal
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Może problemem jest to, że nie masz uprawnień do odczytywanego pliku, spróbuj zamiast od razu go ściągać po prostu go otworzyć i zobaczyć jakie komunikaty wypluje php.

Edit: no i nie dawaj '@' przed readfile (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował krowal 24.07.2009, 10:18:56
Go to the top of the page
+Quote Post
nexis
post
Post #3





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


  1. <?php
  2. public function getAction()
  3. {
  4.  
  5.    $fid = $this->_getParam('id');
  6.    $pid = $this->_getParam('id_project');
  7.    $file = $this->project->getFile($id); # Funkcja getFile() powinna sprawdzać typy danych
  8.    $filename = sprintf('./files/projects/%s/%s', $id_project, $file['file']);
  9.    if (!file_exists($filename))
  10.    {
  11.        exit('Plik nie istnieje!');
  12.    }
  13.    $this->getResponse()
  14.         ->clearAllHeaders()
  15.         ->setHeader('Pragma', 'public', true)
  16.         ->setHeader('Cache-control', 'must-revalidate, post-check=0, pre-check=0', true)
  17.         ->setHeader('Cache-control', 'private')
  18.         ->setHeader('Expires', '0', true)
  19.         ->setHeader('Content-Type', 'application/octet-stream')
  20.         ->setHeader('Content-Transfer-Encoding', 'binary', true)
  21.         ->setHeader('Content-Length', filesize($filename), true)
  22.         ->setHeader('Content-Disposition', 'attachment; filename=' . basename($filename))
  23.         ->setBody(file_get_contents($filename));
  24. }
  25. ?>


Ten post edytował nexis 24.07.2009, 12:54:46
Go to the top of the page
+Quote Post

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: 23.08.2025 - 13:22