Just nu i M3-nätverket
Jump to content

Tvinga fram "Save As" dialogruta?


25fps

Recommended Posts

Problemet är som följer: Jag har en hel del QuickTime filmer på min sajt. När man komprimerar dessa filmer kan man ställa in dem för "Fast Start", vilket innebär att filmen börjar spelas upp innan den är helt färdigt nerladdad från en sajt (ej streaming alltså!). Men för att det ska funka måste mov-filmen ligga i en htm-fil med en speciell kod. Om länken går direkt till filmfilen måste den laddas ner helt innan den kan spelas upp. Med andra ord måste jag alltså länka till en htm-sida, men det leder till att man inte kan köra med högerklicka -> Save As. Då får man ju endast htm-sidan sparad.

 

Alltså så vill jag ha en länk (PLAY) som går till htm-sidan med filmen och en annan länk (DOWNLOAD) som tvingar fram just "save as" dialogrutan. (Tycker det blir lite väl stökigt om jag måste be tittaren att välja först rätt länk och sedan köra med högerklicka -> Save As för att kunna tanka ner filen.)

 

Trodde först att det skulle gå att lösa med ett enkelt javascript men efter mycket letande så verkar detta mer som ett jobb för PHP, alternativt ASP.

 

Eftersom jag aldrig sysslat med varken ASP eller PHP och inte kan något om det hela så förökte jag med olika koder jag hitade på nätet med varierande framgång. Upptäckte dock till min förvåning att jag ju faktiskt kan lite av grunderna i PHP pga av lite scripting i Maya.

 

Lyckades iaf till sist med en fungerande lösning:

 

<?[color="#0000ff"]php[/color]

$saveName = [color="#ff0000"]stripslashes[/color]($HTTP_GET_VARS["name"]); 
$savePath = [color="#ff0000"]stripslashes[/color]($HTTP_GET_VARS["path"]); 

[color="#ff0000"]header[/color] ("Content-Type: application/octet-stream"); 
[color="#ff0000"]header[/color] ("Content-Disposition: attachment; filename=$saveName"); 
[color="#ff0000"]header[/color] ("Content-Transfer-Encoding: binary");
[color="#ff0000"]header[/color]("Content-Length: ".[color="#ff0000"]filesize[/color]($savePath)); 
[color="#ff0000"]readfile[/color]($savePath); 
[color="#0000ff"]exit[/color];

?> 

 

Som jag kallar med:

<a href="[color="#ff0000"]dl[/color]_[color="#ff0000"]file[/color].[color="#0000ff"]php[/color]/?[color="#ff0000"]file[/color]=video/filnamnet.mov&name=såhärheterfilen.
mov">download</a>

 

Har förstått att denna kod troligtvis inte är vidare säker, men jag har ingen databas eller liknande på servern som är känsligt för den delen heller. Vet dock inte rent praktiskt varför den är en säkerhetsfara...

 

Dock verkar jag få problem med vad som känns som att servern fryser till helt ibland. Kan det ha att göra med "readfile" funktionen, eftersom filerna är lite större (2-20MB)?? Får dock inte Rob Funks kod att funka:

http://se2.php.net/manual/en/function.readfile.php

 

Har b-one som webbhotell.

 

Tacksam för svar men försök att hålla det så enkelt som möjligt eftersom PHP mer eller mindre är en vit fläck på kartan för mig =)

 

 

Link to comment
Share on other sites

Ett annat alternativ, om B-One låter dig använda .htaccess-filer, så kan du själv sätta mime-typen på filerna: Skapa filen .htaccess i samma katalog som QT-filerna, och se till att den innehåller följande:

AddType application/octet-stream mov

Då kommer Apache att skicka alla mov-filer som application/octet-stream, vilket borde få de flesta bläddrare att vilja spara filen.

 

Det förutsätter förstås att det inte strular till det för uppspelandet av filerna.

 

Link to comment
Share on other sites

Även om det inte är svar på din fråga så kan man ju spara quicktimefilen när man sett på den genom att klicka på den lilla knappen nere till höger i spelaren och sen välja "save source as.." (eller nåt liknande) och sen spara den.

 

Om det inte löser sig så kan du upplysa besökarna om det.

 

Link to comment
Share on other sites

AddType application/octet-stream mov

Då kommer Apache att skicka alla mov-filer som application/octet-stream, vilket borde få de flesta bläddrare att vilja spara filen.

 

 

Det funkar med firefox men inte med IE 6, konstigt nog. I samma veva upptäckte jag att firefox faktiskt inte behöver ha en <EMBED> tag för att börja spela upp en QT fil med Fast Start, det räckte med en länk till filen. Detta fungerar inte med IE (iaf inte med 5.5 eller senare).

 

Link to comment
Share on other sites

Tack tjoff, är medveten om det men tror att vissa besökare nog lätt blir irriterade på en sådan lösning. Om man vill ladda ner något så vill man inte gå omvägar dit tror jag.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...