Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ustalenie nazwy pobieranego pliku
Forum PHP.pl > Forum > Przedszkole
ametyst1980
Pobieram sobie plik w taki sposób:

  1. $plik='http://pobierzd32.pl/plik/4d048d95c8d9565d6c674c083cca2f49f1fe2cc9deeaaf11c682b1fa5292f1eabb9d8e17d78d4939
    d7ac7cdf066c266124a2298287bcb5809997ece5d4c08b9c/Dick+Philip+K.+-+Mo%C5%BCemy+ci%C4%99+zbudowa%C4%87+%281972%29.mobi'
    ;
  2.  
  3. file_put_contents("nazwa_pliku.mobi", fopen($plik, 'r'));


Wszystko działa, ale muszę podać jakąś nawę pliku, żeby się to zapisało.

Gdy wklejam link do przeglądarki ona automatycznie ustala odpowiednią nazwę pliku.
Jak uzyskać taki efekt i automatycznie ustalać nazwę pobieranego pliku ?

Trzeba nagłówki analizować, czy jak to ogarnąć ?
nospor
W temacie piszesz o pobieraniu, tu pokazujesz kod do zapisywania... sie zdecyduj...

I tak, jesli udostepnisz jakis plik userom i chcesz nadac mu nazwe pod jaka go sciagna, to musisz pobawic sie naglowkami
ametyst1980
No chyba pobranie pliku (download) to zapisanie pliku na dysk/serwer ?

Może ktoś ma jakiś działający skrypcik, który zapisze mi automatycznie w danym folderze plik/wiele plików
z automatycznym ustawieniem odpowiedniej nazwy ?
nospor
Cytat
No chyba pobranie pliku (download) to zapisanie pliku na dysk/serwer ?

Gdy ktos wrzuca plik na serwer to UPLOAD
Gdy ktos pobiera plik z serwera to DOWNLOAD
ametyst1980
W przykładzie pobieram plik z zewnętrznego serwera i chce go zapisać obojętnie gdzie (może być na moim serwerze ->wtedy wg Ciebie byłby to downloado-upload, może być lokalnie na dysku),
zależnie skąd odpalam skrypt, czy z serwera czy z komputera. Nie ma to znaczenia. Ważne, żeby za pomocą php pobrać nazwę pliku, tak jakbym wkleił ten link do przeglądarki (ona automatycznie ustala odpowiednią nazwę).

Szukałem pomocy na stackoverflow, ale na tą chwilę nie znalazłem.
nospor
O widzisz, zle ciebie zrozumialem.

W podanym przykladzie nazwe pliku masz w url. Czemu nie pobierzesz jej stamtad?
ametyst1980
No niby jest, trochę zakodowana, ale idzie to pobrać, lecz czasem bywa tak, że link ma nazwę powiedzmy "asojdioasu890czxucoijwklmq3" a przeglądarka
i tak ustala prawidłową nazwę w jakiś sposób.

Tutaj jest coś na ten temat:
http://stackoverflow.com/questions/5195867...to-get-filename

Piszą o Content-Disposition, ale nie za bardzo wiem jak to pobrać z nagłówków ?
nospor
Uzyj curl zamiast fopen i dobierzesz sie do pliku razem z naglowkami
http://php.net/manual/en/book.curl.php
ametyst1980
Tutaj znalazłem podpowiedź, ale nie do końca wiem jak jej urzyć:
http://stackoverflow.com/questions/6881034...lowing-location

Mam ten kod:
  1. url="http://www.vim.org/scripts/download_script.php?src_id=10872"
  2. filename=$(curl -sI $url | grep -o -E 'filename=.*$' | sed -e 's/filename=//')
  3. curl -o $filename -L $url


i najprostszy kod połączenia cURL:

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, $url);
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  4. $output = curl_exec($ch);
  5. curl_close($ch);


W jaki sposób wstawić ten kod w curl, żeby to działało, bo jak tak robię, to wywala błędy:

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, $url);
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  4.  
  5. $filename=$(curl -sI $url | grep -o -E 'filename=.*$' | sed -e 's/filename=//')
  6. curl -o $filename -L $url
  7.  
  8. $output = curl_exec($ch);
  9. curl_close($ch);

questionmark.gif
nospor
Mieszasz kod konsolowy z kodem php to nic dziwnego ze nie masz bledy po stronie php
ametyst1980
No właśnie nie wiem o co chodzi z tym kodem, jestem amatorem w tej dziedzinie, jednak chciałbym jakoś w końcu pobrać tą nazwę, bo siedzę
nad tym już dość długo.

Jak mam użyć tego 'kodu konsolowego' w PHP questionmark.gif
nospor
Cytat
Jak mam użyć tego 'kodu konsolowego' w PHP

Masz go w ogole nie uzywac. Po grzyba ci kod konsolowy w php?

curl w php zwraca ci naglowki. Pobierz je i wez z nich co cie interesuje czyli nazwe pliku
ametyst1980
No właśnie cały czas próbuje to pobrać, ale nie wiem jak 'pobrać nagłówki i wziąć z nich to co mi potrzebne'.
Dla Ciebie to oczywiste, ale dla mnie niestety nie...
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.