[php] łączenie pliku a później "podanie" całości

0

czy dało by się zrobić coś takiego że mam pliki np.
1.txt
blabla
2.txt
bleble
i skrypt zrobilby takiego myka że połączyl mi by oba pliki (co w efekcie dało by "blablableble" -- bez zadnych spacji czy nowej linijki!) i "podałby" przegladarce do ściagniecia jako np plik 3.txt (ale nie tworzył by tego pliku w ogole!)..
i czy dało by sie zrobić coś takiego dzialajacego na plikach binarnych (nie tekstowych) ??

0
$s = implode(file_get_contents('1.txt'), file('2.txt'));

Co tego "3.txt", to albo użyjesz mod_rewrite, albo stworzysz plik, zapiszesz do niego treść ($s) i go usuniesz, np. tak:

$s = file_put_contents('3.txt', implode(file_get_contents('1.txt'), file('2.txt')));
// operacje
unlink($s);

Jeśli masz PHP 4, to masz definicję funkcji file_put_contents:

function file_put_contents($n,$d) {
  $f=@fopen($n,"w");
  if (!$f) {
   return false;
  } else {
   fwrite($f,$d);
   fclose($f);
   return true;
  }
}

Hm, chyba trza to dodać do FAQ :)

  • no i dodałem - http:*4programmers.net/PHP/FAQ/File_put_contents_dla_PHP_4
0

:|

to z plików:

1.txt
blabla

2.txt
bleble

zrobi:

3.txt
bleble

a np z:

1.txt
blabla

2.txt
bleble
bleble

zrobi

3.txt
bleble
blablableble
blabla

chyba że się mylę ?
raczej chodzi o

$txt = file_get_contents('1.txt') . file_get_contents('2.txt');

za to wcale nie musisz tego zapisywać do pliku, wystarczy że prześlesz do przeglądarki nagłówek mówiący o tym że przeglądarka ma do czynienia z załącznikiem i podać nazwę pliku

ale rozwiązanie z mod_rewrite by było chyba lepsze ze względu na to że przeglądarka nie ma wtedy nic do gadania i na pewno nie zapisze pliku z rozszerzeniem php

0

Adamo: fakt, masz rację z tym implode, pomyliło mi się. I właśnie miałem poprawić na to, co napisałeś, ale coś akurat 4p przez chwile nie kontaktowało.

0

za to wcale nie musisz tego zapisywać do pliku, wystarczy że prześlesz do przeglądarki nagłówek mówiący o tym że przeglądarka ma do czynienia z załącznikiem i podać nazwę pliku

no a jak to zrobic? przy uzyciu tego:

$txt = file_get_contents('1.txt') . file_get_contents('2.txt');

0

Chociazby tak:

echo file_get_contents('1.txt') . file_get_contents('2.txt');

Ew. zeby przegladarka byla na 100% pewna, ze to czysty tekst to:

header("Content-type:text/plain");
echo file_get_contents('1.txt') . file_get_contents('2.txt');
0

no ale ja chce zeby nie wyswietlic to w przegladarce tylko sciagnac!

0

No to podaj odpowiedni naglowek:

header("Content-type:application/octet-stream");
header('Content-Disposition: attachment; filename="3.txt"');
echo file_get_contents('1.txt') . file_get_contents('2.txt');

1 użytkowników online, w tym zalogowanych: 0, gości: 1