Kom ihåg mig?
Home Menu

Menu


Hur få fil nedladdningsbar?

Ämnesverktyg Visningsalternativ
Oläst 2006-05-14, 23:25 #1
Milad Milad är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2004
Inlägg: 505
Milad Milad är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2004
Inlägg: 505
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?
Milad är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-15, 00:46 #2
FredrikMHs avatar
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2004
Inlägg: 1 501
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
FredrikMHs avatar
 
Reg.datum: Apr 2004
Inlägg: 1 501
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();
}
Det är möjligt att det går att göra på annat sätt.
FredrikMH är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-15, 09:43 #3
Milad Milad är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2004
Inlägg: 505
Milad Milad är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2004
Inlägg: 505
Citat:
Originally posted by FredrikMH@May 15 2006, 00:46
I PHP kan du göra något hitåt. Jag har inte testat koden men den bör fungera
Kod:
ifisset_GETfilename {
 filename = _GETfilename;
 headerContent-Type audio/mpeg;
 headerContent-Disposition attachment; filename=filename;
 headerContent-Length . filesizefilename;
 headerExpires 0;
 fileHandle = @fopenfilename, rb;
 do
 {
 data = freadfileHandle, 4096;
 echo data;
 }while data =;
 fclosefileHandle;
 exit;
}
Det är möjligt att det går att göra på annat sätt.
kan inte php. Jag jobbar med asp
Milad är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-15, 10:23 #4
2cool4schools avatar
2cool4school 2cool4school är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2006
Inlägg: 857
2cool4school 2cool4school är inte uppkopplad
Mycket flitig postare
2cool4schools avatar
 
Reg.datum: Apr 2006
Inlägg: 857
Skriv: Höger klicka och välj "Spara som" för att ladda ner filen
2cool4school är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-15, 10:36 #5
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
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
Staffconsulting är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-15, 10:39 #6
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
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]
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-15, 10:39 #7
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
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
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-15, 10:41 #8
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Shit, Kullervo också. Serviceandan är på top så här på måndagsmorgonen.
Robert är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 14:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017