Downloading file (Headers)


Posted on 16th Feb 2014 07:03 pm by admin

I'm trying to make users download a file, but they must wait 60 seconds before it begins.

But, I'm stuck - the file isn't downloading, and no error is being shown (I've enabled E_ALL error reporting).

Did you know?Explore Trending and Topic pages for more stories like this.
The file does exist.

Here is the code I use to download the file (I've cut the code that isn't needed)
Code: (php) [Select]<?php
//code removed
case "dlStart":
$file = $_POST['fileid'];
//query
$query = "SELECT * FROM files WHERE fid=$file";
$result = $sql->query($query);
$row = $result->fetch_assoc();
$file = $row['filelocation'];
if ($result->num_rows != 1){
$content = '<h1>Download File</h1>
<h2>Looks like you&#38;#39;ve found an error!</h2>
<p>The file that you are trying to download either has been deleted, or has never existed.</p>
<p>Please go back and try again.</p>';
$content .= '<p style="text-align: center; ">Powered by <a href="http://www.scriptboxer.com/download-site-script.php">DownloadBoxer v1</a>.<br />
&copy; <a href="http://www.scriptboxer.com">ScriptBoxer</a> - <a href="http://www.scriptboxer.com">PHP Scripts</a></p>';
$html = str_replace('{content}', $content, $html);
$html = str_replace('{title}', 'Downloading File....', $html);
echo $html;
}else{
$content = '<form name="counter"><h1>Download File</h1>
<h2>Your download will begin in:
<input name="d2" size="1" type="text" style="font-family:Segoe UI, Trebuchet MS, Helvetica, sans-serif; font-size:23px; font-weight:bold;" />&nbsp;seconds</h2>
</form>
<script>
<!--
//
var milisec=0
var seconds=60
document.counter.d2.value='30'

function display(){
if (milisec<=0){
milisec=9
seconds-=1
}
if (seconds<=-1){
milisec=0
seconds+=1
}
else
milisec-=1
document.counter.d2.value=seconds+"."+milisec
setTimeout("display()",100)
}
display()
-->
</script>
<p><span style="font-size:11px;">Clicking adverts have no affect on the loading of the file.</span></p>
<p><a href="?action=donateToUs">Our service is free. Click here to keep it that way.</a></p>
<p><strong>File uploaded by</strong>: '.$row['owner'].'</p>
<p><strong>Why do I have to wait to download my file?</strong><br />
We require users to wait before downloading files, so that we can reduce the load on the server. Sometimes, you will be able to download immediately,
other times you will need to wait upto 20 minutes.</p>
<p><a href="?action=reportFile">CLICK HERE TO REPORT ILLEGAL/PIRATE FILES</a></p>';
function output_file($file, $name, $mime_type='')
{
if(!is_readable($file)) die('File not found or inaccessible!');
$size = filesize($file);
$name = rawurldecode($name);
/* Figure out the MIME type (if not specified) */
$known_mime_types=array(
"txt" => "text/plain",
"zip" => "application/zip",
"doc" => "application/msword",
"xls" => "application/vnd.ms-excel",
"gif" => "image/gif",
"png" => "image/png",
"jpeg"=> "image/jpg",
"jpg" => "image/jpg",
);

if($mime_type==''){
$file_extension = strtolower(substr(strrchr($file,"."),1));
if(array_key_exists($file_extension, $known_mime_types)){
$mime_type=$known_mime_types[$file_extension];
} else {
$mime_type="application/force-download";
};
};
@ob_end_clean(); //turn off output buffering to decrease cpu usage
// required for IE, otherwise Content-Disposition may be ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');

header('Content-Type: ' . $mime_type);
header('Content-Disposition: attachment; filename="'.$name.'"');
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
header("Cache-control: private");
header('Pragma: private');
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// multipart-download and download resuming support
if(isset($_SERVER['HTTP_RANGE']))
{
list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
list($range) = explode(",",$range,2);
list($range, $range_end) = explode("-", $range);
$range=intval($range);
if(!$range_end) {
$range_end=$size-1;
} else {
$range_end=intval($range_end);
}
$new_length = $range_end-$range+1;
header("HTTP/1.1 206 Partial Content");
header("Content-Length: $new_length");
header("Content-Range: bytes $range-$range_end/$size");
} else {
$new_length=$size;
header("Content-Length: ".$size);
}
/* output the file itself */
$chunksize = 1*(10241024*10241024); //you may want to change this
$bytes_send = 0;
if ($file = fopen($file, 'r'))
{
if(isset($_SERVER['HTTP_RANGE']))
fseek($file, $range);
while(!feof($file) &&
(!connection_aborted()) &&
($bytes_send<$new_length)
)
{
$buffer = fread($file, $chunksize);
print($buffer); //echo($buffer); // is also possible
flush();
$bytes_send += strlen($buffer);
}
fclose($file);
} else die('Error - can not open file.');
die();
}
}
$content .= '<p style="text-align: center; ">Powered by <a href="http://www.scriptboxer.com/download-site-script.php">DownloadBoxer v1</a>.<br />
&copy; <a href="http://www.scriptboxer.com">ScriptBoxer</a> - <a href="http://www.scriptboxer.com">PHP Scripts</a></p>';
$html = str_replace('{content}', $content, $html);
$html = str_replace('{title}', 'Downloading File....', $html);
echo $html;
break;
?>
The files are located outwith the public directory, and the MySQL db has the full location stored in it (as the format /home/bleh/blah/etc)

Can anyone help?

I'd also like the download to begin after $config['waittime'], so how do I do that aswell?
No comments posted yet

Your Answer:

Login to answer
123 Like 32 Dislike
Previous forums Next forums
Other forums

Backflush
I am looking for a report in SAP that would give me a list of all parts that are populated with a ba

Help with usergroups? prolly really quick
So were coding our own forums for a game system we made an we have the users level setup but now I n

problem with script manager
Hi iam using Net.2005.I have created ajax enabledwebsite.i have master page in which i have script m

Google voice
I currently have a form in html, but I want it in php so the information is not in the source code.<

Change image filetype on upload?
Hi,
I've got a form which uploads an image to the server.
Is it possible to change the image t

Will an XHTML DOCTYPE interfere with my PHP if I'm not experienced enough?
I've read this article here: http://friendlybit.com/html/why-xhtml-is-a-bad-idea/

In a nutshe

defining website tags
Hi,

What would be the best way to define tags for my site, such as website title, url etc.

Php If in MySql query (hiding labels if a field is empty)
Okay, I've been trying to do this for a while, and I'm finally going to ask for help so I can get th

Warehouse Management
Hi,

On our system, we have two storage locations ( A and B ) where A is the main factory

How to add advertisment on top of videos
Hello,
I was told that i should find the answer for this problem in this forums.
I searched a

Sign up to write
Sign up now if you have flare of writing..
Login   |   Register
Follow Us
Indyaspeak @ Facebook Indyaspeak @ Twitter Indyaspeak @ Pinterest RSS



Play Free Quiz and Win Cash