FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Mycket flitig postare
|
Om jag lägger en mp3-fil på servern och vill att besökarna på min sida skall kunna klicka på länken som då ger en liten ruta där man får välja om man vill ladda ner filen eller öppna den.
Om jag skriver som en vanlig länk med <a href="song.mp3"> öppnas ju den direkt i fönstret, men det vill jag ju inte utan vill att man skall få frågan om man vill ladda ner. Hur gör man det? |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Supermoderator
|
I PHP kan du göra något hitåt. Jag har inte testat koden men den bör fungera
Kod:
if(isset($_GET['filename'])) { $filename = $_GET['filename']; header("Content-Type: audio/mpeg"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Length: " . filesize($filename)); header("Expires: 0"); $fileHandle = @fopen($filename, 'rb'); do { $data = fread($fileHandle, 4096); echo $data; }while ($data != ""); fclose($fileHandle); exit(); } |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Mycket flitig postare
|
Citat:
![]() ![]() |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Skriv: Höger klicka och välj "Spara som" för att ladda ner filen
![]() ![]() ![]() |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Flitig postare
|
Har inte lösningen åt dig för jag använder en komponent men du kanske kan fila ihop en kod med hjälp utav detta :
vFileName = Request.Querystring("filnamn") If InStr(Request.Servervariables ("HTTP_USER_AGENT"),"5.5") > 0 Then Response.Addheader "Content-Disposition", "inline; filename=" & vFileName Else Response.Addheader "Content-Disposition", "attachment; filename=" & vFileName End If ' Filsystemet laddar ner filen : set oFS = Server.CreateObject("SoftArtisans.FileManager") set oF = oFS.GetFile(vFullPath) Response.AddHeader "Content-Length", oF.Size set oF = nothing set oFS = nothing ' ** Fixar så nerladdning i IE 5.5 fungerar : ** If InStr(Request.Servervariables ("HTTP_USER_AGENT"),"5.5") > 0 Then Response.ContentType = "application/download" Else Response.ContentType = "application/x-msdownload" End If Response.CacheControl = "public" Set oDownload = Server.CreateObject("SoftArtisans.FileUp") oDownload.TransferFile vFullPath |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Klarade millennium-buggen
|
GÖr mp3'an åtkomlig via en asp-fil istället så har du kontroll över de headers som skickas tillbaka till webläsaren.
Låt asp-koden läsa in mp3an och sätt följande i ditt response objekt: * contenttype ska vara "application/octet-stream" * Lägg till en header (addHeader?) som heter "Content-Disposition". Dess värde skall vara "attachment; filename=här_skriver_du_in_det_filnamn_som_ska_bli _i_webläsarens_spara_dialog" * Skicka tillbaka mp3 filen som response (response.binary?) Observera att jag inte kodat asp på några år så HUR du gör detta vet jag inte, men jag vet att det fungerar om du sätter ovanstående i headern. [Edit:StaffConsulting hann före] ![]() |
|||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Bara ett inlägg till!
|
För att sammanfatta FredrikMHs långa exempel behöver du skicka headern Content-Disposition. T.ex:
Content-Disposition: attachment; filename=filnamn.mp3 Det är också klokt att säga åt webbläsaren att mime-typen är application/octet-stream. Det gör du med följande header: Content-type: application/octet-stream |
|||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Klarade millennium-buggen
|
Shit, Kullervo också. Serviceandan är på top så här på måndagsmorgonen.
![]() |
|||
![]() |
![]() |
Svara |
|
|