WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Nedladdningsbar fil (https://www.wn.se/forum/showthread.php?t=29828)

editman 2008-06-10 10:59

Har en länk där besökaren skall kunna ladda ner en .wmv fil, men den öppnas direkt i Windows Media Player.

Finns det något sätt att kringgå detta? Vill att "spara som" rutan kommer upp.

Har använt ett php-script, men får följande felmeddelande:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 377725127 bytes) in D:\inetpub\vhosts\showcases.tv\httpdocs\panvision\ getfile.php on line 9

Var kan jag ändra minnestorleken?

Davve 2008-06-10 11:01

Gör en ZIP eller RAR av den?

editman 2008-06-10 11:04

har testat det, men kunden gillade inte den lösningen...

Osiris 2008-06-10 11:28

Ta och läs på om response types. Går ju att tala om för webbläsaren att det är en bild, xml, html eller något som borde laddas ner också har jag för mig.
Hittar jag min kod för detta när jag kommer hem så postar jag den här.

editman 2008-06-10 11:33

tack för tipset, uppskattar verkligen om du har möjlighet att posta koden.

mr_lundis 2008-06-10 11:58

Felet du får beror på att ditt php-skript försöker allokera mer minne än tillåtet, du behöver med andra ord öka mängden minne php får använda (memory_limit i php.ini).

Lär mer här:
http://www.ducea.com/2008/02/14/increase-p...p-memory-limit/

editman 2008-06-10 12:16

tack för svaret, var hittar jag php.ini?

WizKid 2008-06-10 12:35

Om du kollar i phpinfo så står sökvägen till den.

Hur ser PHP-skriptet ut?

mr_lundis 2008-06-10 12:36

Om du läser lite (kolla länken jag gav dig!) så ser du att du kan använda ini_set direkt i php-filen.
Kod:

ini_set('memory_limit', '64M'); // Byt ut 64 mot antalet MB du vill ha som maxgräns

eliasson 2008-06-10 12:38

Kod:

Header("Content-Type: image/jpeg\n");
Header("Content-Disposition: attachment; filename=test.jpeg");
echo "Contents...";


editman 2008-06-10 12:48

Citat:

<?php

$filen = $_GET['file'];

$path = './';
/* Denna koll måste vara mycket bättre än såhär med tanke på säkerheten! */
$filename = str_replace('../', '', $filen);

$file = file_get_contents($path . $filename);

header("Content-type: video/x-ms-wmv\n");
header("Content-disposition: attachment; filename=\"$filename\"\n");
header("Content-transfer-encoding: binary\n");
header("Content-length: " . filesize($path . $filename) . "\n");
echo $file;

exit;

?>


editman 2008-06-10 12:49

bifogade scriptet ovan

WizKid 2008-06-10 12:49

Använd readfile istället så slipper php läsa in hela filen i en variabel.

editman 2008-06-10 13:02

hur skulle scriptet se ut isåfall?

(är inte van php-användare, jobbar normalt med ASP.NET C#)

Tacksam för alla svar!

mr_lundis 2008-06-10 13:15

Kod:

<?php

$filename = $_GET['file'];

// Gör säkerhets kontroller...

$path = './';

header("Content-type: video/x-ms-wmv\n");
header("Content-disposition: attachment; filename=\"$filename\"\n");
header("Content-transfer-encoding: binary\n");
header("Content-length: " . filesize($path . $filename) . "\n");
readfile($path.$filename);



Alla tider är GMT +2. Klockan är nu 02:06.

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