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) ??
$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
:|
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
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.
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');
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');
no ale ja chce zeby nie wyswietlic to w przegladarce tylko sciagnac!
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');
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.