![]() |
Hallå igen :)
Denna gången letar den här gubben efter tips om hur man får alla filer (ljud, filmer) att få upp rutan "spara" Som det är just nu är det lite olika, ibland öppnas den direkt i webbrowsern och ibland får du spara och ibland öppna och spara. Vore trevligt att man iaf fick upp "spara" varje gång. //Tack |
Det har att göra med hur servern skickar filen, och specifikt hur headern ser ut.
Många servrar sätter automatiskt mime-typen på ett dokument till "rätt" för att underlätta för användaren (browsern). Det du vill göra är troligen det omvända, det kan du göra med tex http://php.net/header Exakt vad du måste göra är jag inte riktigt hundra på men eventuellt så kan du helt enkelt sätta den till nån "Unknown"-type (lite fult, men borde funka) så kommer browsern att erbjuda användaren att spara filen.. Det finns nog bättre sätt dock :-) |
Du bör inte välja "fel" mime-typ. Istället finns det en header som heter "Content-Disposition". Om du sätter dess värde till "attachment; filename=bild.jpg" så kommer nerladdningsfrågan upp och filen kommer heta bild.jpg även om det är ladda_ner_fil.php?id=123 som man surfat in på.
|
Jag har ett nedladdningsscript i PHP och har kört med följande:
header("Content-type: application/x-unknown"); header("Content-Disposition: attachment; filename=\"".$name."\""); Verkar fungera utan problem. |
Citat:
Om man har rätt MIME-typ fungerar spara-fil-rutan i IE bättre. Säger du att det är en ZIP-fil så kommer nerladdningsrutan också förstå det (så att filnamnsändelsen zip är markerad i drop-down-listen och så att man bara ser andra zipfiler). |
Problemet ibland är att om webbläsaren förstår vad det är för filtyp så kan den agera genom att öppna associerad applikation utan att presentera användaren med ett val.
Jag använder scriptet för nedladdning av mp3 filer för att försäkra mig om att användaren presenteras med ett val att ladda ner istället för att mediaplayer/winamp öppnas automatiskt. Oftast kan man väl instruera användare om att de ska högerklicka och välja "spara som". Men det är inte altid smidigast, och i mitt fall så är länken i flash, vilket gjorde det nödvändigt att fuska med MIME för att ge användaren ett val. Och även om det det är en icke existerande MIME typ så kommer det upp en dialog som låter dig välja om du ska öppna den i mediaspelare eller spara. Så även om det är en lite fuskig metod ser inte jag några direkta problem med den. |
Citat:
Edit: Raderad utläggning om "Content-Disposition". "Content-Disposition" är tydligen inte en standard i HTTP. |
Båda fungerar i tex firefox.
Men IE ger användaren en extra dialog om jag använder "application/octet-stream" som frågar om jag vill öppna den i explorer. Om jag använder förvalet och säger åt IE att komma ihåg mitt val och öppna den i IE så kommer jag inte presenteras med ett val nästa gång. Så resultatet är bättre om jag kör med "x-unknown". Då frågar alla webbläsare alltid om jag vill öppna eller spara. Rätt eller inte, så länge det fungerar som jag vill så måste jag säga att jag personligen inte bryr mig så mycket om vad som anses korrekt eller inte. Sen är som sagt anledningen att jag inte låter användaren högerklicka om de vill spara filen att jag kör med flash. Annars är väl det den kanske bästa metoden och folk är väl i allmänhet rätt vana vid det. |
Tackar återigen, satt en stund med detta men verkar fungera med :
header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$filename\""); readfile($unixpath); |
Alla tider är GMT +2. Klockan är nu 08:49. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson