webForumDet fria alternativet

Webbläsaren försöker läsa in filen istället för att ladda ner den...

PHP

2 svar · 192 visningar · startad av aztek

Medlem sedan feb. 200277 inlägg
Frågan#1

Jag har försökt få ihop ett nedladdningsscript som ska visa ett värde istället för hela sökvägen. Problemet just nu är att istället för att man får välja om man ska spara filen eller inte försöker webbläsaern ladda in hela filen i sidan, vilket givetvis tar en ohejdans lång tid (filerna är mellan 50 och 100MB stora). Jag lyckades få det att fungera om jag gjorde ett enkelt HTML dokument med en länk men inte nu när jag bäddar in det hela i mina php sidor. Har provat med olika headers utan resultat.

Länkarna skrivs ut följande: djsets.php?dl=44 exempelvis. Jag plockar värdet av dl direkt.

Koden:

if ($dl) {
	$connection_djsets = mysql_connect($host,$user,$password) or die ("Kunde inte koppla upp mot MySQL servern\n". mysql_error());
	mysql_select_db($db) or die(mysql_error());
	$result = mysql_query('SELECT * FROM djsets WHERE id = '.$dl) or die (mysql_error());
		while ($row = mysql_fetch_array($result)) {
			extract($row);
			$filename = "F:/htdocs/smuts/music/$row[4]";
		}
	mysql_close($connection_djsets);

	$shortname = basename($filename);

	if(file_exists($filename) && !eregi("p?html?", $filename) && !eregi("inc", $filename) && !eregi("php", $filename) && !eregi("log", $filename) && !eregi("php3?", $filename)){
		$size = filesize($filename); 
		//header("Content-Type: application/save"); 
		//header("Content-Type: application/octet-stream"); 
		header("Content-Type: application/download"); 
		header("Content-Length: $size");
		//header("Content-Disposition: attachment; id=$shortname"); 
		header("Content-Disposition: attachment; filename=$shortname");
		header("Content-Transfer-Encoding: binary"); 
		$fh = fopen("$filename", "rb"); 
		fpassthru($fh); 
		exit;
	}
}

?>

<td width="422"><table width="422" cellpadding="0" cellspacing="0" border="0">
					<tr>
						<td bgcolor="#E9E9E9"><table width="422" cellpadding="0" cellspacing="0" border="0" background="img/news_back.gif">
								<tr>
									<td colspan="5"><img src="img/sets_top.gif"></td>
								</tr>
								<tr>
									<td colspan="5"><img src="img/empty.gif" width="1" height="5"></td>
								</tr>
								<tr valign="top">
									<td width="5"><img src="img/empty.gif" width="5"></td>
									<td width="412"><table width="100%" cellpadding="2" cellspacing="0" border="0">
<?php
	$connection_djsets = mysql_connect($host,$user,$password) or die ("Kunde inte koppla upp mot MySQL servern\n". mysql_error());
	mysql_select_db($db) or die(mysql_error());
	if ($pl) {
		$result = mysql_query('SELECT * FROM djsets WHERE id = '.$pl) or die (mysql_error());
		while ($row = mysql_fetch_array($result)) {
				extract($row);
				echo "<tr bgcolor=DFDFDF><td>Playlist for $row[2]</td></tr>";
				echo "<tr bgcolor=E9E9E9><td>".nl2br($row[5])."<p>« <a href=\"djsets.php\">back</a></td></tr>";
		}
	} else {
		$result = mysql_query('SELECT * FROM djsets ORDER BY dj') or die (mysql_error());
		$bgcolor = "#E9E9E9";
			while ($row = mysql_fetch_array($result)) {
				extract($row);
				print "<tr bgcolor=\"$bgcolor\" valign=top><td><b>$row[1] - $row[2]</b></td><td align=right>";
				if ($row[5] != '') {
					print "<a href=\"djsets.php?pl=$row[0]\"><img src=\"img/pl.gif\" border=\"0\" alt=\" :: View Playlist :: \"></a>";
				}
				print " <a href=\"djsets.php?dl=$row[0]\"><img src=img/dl.gif border=0 alt=\" :: Download :: \"></a></td></tr>";
				print "<tr bgcolor=\"$bgcolor\"><td colspan=2>$row[3] : $row[6]</td></tr>";
				print "<tr><td colspan=2><img src=\"img/empty.gif\" width=1 height=0></td></tr>";
				$bgcolor = $bgcolor == "#DFDFDF" ? "#E9E9E9" : "#DFDFDF";
			}

	}
	mysql_close($connection_djsets);
?>
											</table></td>
Medlem sedan feb. 200277 inlägg
#2

Ni kan kolla på denna länk hur det (inte) funkar nu: http://217.215.27.149:8090/smuts/djsets.php

Medlem sedan feb. 200277 inlägg
#3

Jag är tydligen helt blind. Hade en include innan själva allt skulle utföras vilket ledde till att det inte fungerade som det skulle. Funkar bra nu, tack i alla fall :)

304 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
175 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
175 ms — ändringar (db)