Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Dziwna sprawa prz ściąganiu pliku
Forum PHP.pl > Forum > PHP > Frameworki
harvesterix
Witam mam dziwną sytuację przy ściąganiu pliku otóż plik csv na serwerze ma powiedzmy treść "ala ma kota\n", natomiast gdy ściągnę plik przez stronę plik ma treść "ala ma kota\n12" tzn na końcu pliku dopisywana jest liczba znaków jaka się w nim znajduje.
Dwa pytania:
1) Dlaczego tak się dzieje?
2) Jak się tego dopisywania pozbyć?

Dorzucam jeszcze akcję za pomocą której ściągam plik:
  1. public function executePobierzCsv(sfWebRequest $request)
  2. {
  3.  
  4. $i = $request->getParameter('id');
  5. $path = sfConfig::get('sf_upload_dir')."/csv/export".$i.".csv";
  6. $this->forward404If(!file_exists($path));
  7.  
  8. $response = $this->getResponse();
  9. $response->clearHttpHeaders('Pragma: public', true);
  10. $response->setContentType('text/csv');
  11. $response->setHttpHeader('Content-Disposition', 'attachment; filename="export'.$i.'.csv"');
  12. $response->sendHttpHeaders();
  13. $response->setContent(@readfile($path));
  14.  
  15. return sfView::NONE;
  16. }
LBO
Zamień readfile, na file_get_contents.

Doczytaj w manualu readfile, co zwraca ta funkcja, a zrozumiesz błąd.
harvesterix
No tak to rozwiązało problem ale mam jeszcze jedno pytanie. Pliczek który ściągam jest zapisywany przy użyciu kodowania cp-1250
  1. iconv("UTF-8", "CP1250", $text)

na serwerze wszystkie znaki w pliczku są ładnie zakodowane, a po ściągnięciu na dysk mam krzaki (edytor pokazuje że plik ma kodowanie utf8), domyślam się że chodzi o odpowiedni nagłówek który wskaże sposób kodowania zawartości, no i nie bardzo wiem jak go ustawić, próbowałem np tak:
  1. $response = $this->getResponse();
  2. $response->clearHttpHeaders('Pragma: public', true);
  3. $response->setContentType("\'text/".$ext.";charset=windows-1250\'");
  4. $response->setHttpHeader('Content-Disposition', 'attachment; filename="export'.$i.'.'.$ext.'"');
  5. $response->sendHttpHeaders();
  6. $response->setContent(@file_get_contents($path));

i nadal mam krzaki(utf8)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.