ugrás a tartalomhoz

PHP fájlletöltés fájl társítás

mahoo · 2012. Szep. 21. (P), 11.11
Sziasztok, kérdésem az lenne, hogy mi az oka annak, ha pl. egy mp4 típusú fájlt töltenék le a szerverről egy (.htaccess által) nem védett könyvtárból akkor a letöltési ablakban a fájl megnyitásnál be van állítva a VLC player. Ha pedig egy védett kvt-ból php-val szolgálom ki a letöltés akkor pedig egy text-editort ajánl, nem a VLC-t

A php kód a következő:

set_time_limit(0);  
        header('Content-Description: File Transfer');  
        header("Pragma: public");  
        header("Expires: 0");  
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
        header("Cache-Control: private", false);  
        header("Content-Transfer-Encoding: binary");  
        header("Content-disposition: attachment; filename=".basename($file));
        header("Content-type: ".mime_content_type($file));
        header("Content-Length: ".filesize($file));
       
        $handle = fopen($file, 'rb');  
        while (!feof($handle)) {  
          echo $buffer = fread($handle, 1024);  
          ob_flush();  
        }    
        fclose($handle);
        ob_end_flush();  
        exit;
 
1

Content-Type

Poetro · 2012. Szep. 21. (P), 11.33
A Content-Type határozza meg, hogy milyen a fájl típusa, amit a kliens felé továbbítunk. Ha nem megfelelőt adsz vissza, akkor nem megfelelő alkalmazással próbálja meg megnyitni. Valószínűleg a mime_content_type nem megfelelő típust ad vissza, például azért, mert nem ismeri fel a fájl kiterjesztését / típusát például mert régi a magic.mime fájl.
2

Igen, azt tudom, hogy a

mahoo · 2012. Szep. 21. (P), 12.19
Igen, azt tudom, hogy a Content-Type határozza meg, amit a program szerintem be is állít (valamennyire) mert a letöltésnél ki is írja hogy:
*.mp4
ami egy MP4 fájl
forrás: http://....


Ettől függetlenül a bluefish text-editort allítja be.
Normál letöltésnél, mint írtam nincs ez a hiba jelenség... nem értem :(
3

szerintem be is állít Mit

Poetro · 2012. Szep. 21. (P), 13.10
szerintem be is állít

Mit jelent az, hogy szerintem? Mit állít be neki?
A kiterjesztés nem igazán jelent semmit.

*.mp4
ami egy MP4 fájl
forrás: http://....

Ezzel mit akartál mondani?
4

Letöltéskor ezt írja ki a

Hidvégi Gábor · 2012. Szep. 21. (P), 13.23
Letöltéskor ezt írja ki a böngésző. A mime_content_type() egyébként belenéz a fájlba, és az alapján küldi ki a mime típust, volt már olyan, hogy jpg-t átneveztem txt-re, és letöltéskor jpg mime típust jelölt meg emiatt a php.
5

mime_content_type

Poetro · 2012. Szep. 21. (P), 13.26
Azt tudom, mit csinál a mime_content_type, de nem mindig helyes eredményt ad vissza.
6

A letöltési kis ablakban

mahoo · 2012. Szep. 21. (P), 14.27
A letöltési kis ablakban jelenik meg az idézett 3 sor. Ott ki is írja a fájl típusát megfelelően, ezért gondolom azt, hogy a header-ben be van állítva a fájl típus.
Elnézést a pongyola fogalmazásért!
7

Mentés

Poetro · 2012. Szep. 21. (P), 14.58
A mentési ablak általában a kiterjesztés alapján van, nem a fájl típusa alapján.
8

Köszönöm, bár ezzel sajnos

mahoo · 2012. Szep. 21. (P), 16.17
Köszönöm, bár ezzel sajnos még nem vagyok előrébb és nekem jelenleg 5letem sincs, hogy mit csináljak...
9

Nem kell a mime_content_type...

T.G · 2012. Szep. 21. (P), 16.28
Pl. kukázhatnád a mime_content_type utasítást, amúgy is már elavultnak számít.
és helyette:

header('Content-Type: video/mp4');
10

Köszönöm az 5letet, segített

mahoo · 2012. Szep. 21. (P), 22.14
Köszönöm az 5letet, segített :).
Valójában 4 típusú fájlt szolgál ki a php... gondoltam csinálok egy switch-case-t, de előtte kitöröltem a content-type sort -> nem lett jobb. Majd csináltam egy ilyet:
header('Content-Type:');
És most jól működik... hogy miért, én nem tudom. Bár a switch-case-t azért még beteszem.
köszi még1x!!!
11

Kiterjesztés

Hidvégi Gábor · 2012. Szep. 22. (Szo), 08.02
Biztos a böngésző ilyenkor a fájl kiterjesztése alapján dönti el, hogy mi a típusa.
12

Hát lehet... sajnos én nem

mahoo · 2012. Szep. 22. (Szo), 16.40
Hát lehet... sajnos én nem tudom és sehol nem találtam erről infot, de most örülök, hogy működik!