[FX.php List] [OFF] connection_aborted on IIS

Someone someone at gagayaya.com
Mon Dec 14 13:45:40 MST 2009


Hi Dale,
Where do you your database action if download is successful

On Dec 14, 2009, at 2:11 PM, Dale Bengston wrote:

> Hi Frank,
>
> Here's how I force a download x-plat. Content type doesn't matter.  
> You want the browser to think it's not something it can load in a  
> browser window.
>
> 	header('Content-Description: File Transfer');
> 	header('Content-Type: application/octet-stream');
> 	header('Content-Disposition: attachment; filename='. basename 
> ($file));
> 	header('Content-Transfer-Encoding: binary');
> 	header('Expires: 0');
> 	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
> 	header('Pragma: public');
> 	header('Content-Length:' . filesize($file));
> 	ob_clean();
> 	flush();
> 	readfile($file);
> 	exit;
>
> I have not tried it on .exe files. That might be a security thing  
> that IIS is preventing.
>
> Dale
>
>
> On Dec 14, 2009, at 9:38 AM, Someone wrote:
>
>> Hi,
>> Does any one know if connection_aborted function works on IIS  
>> (Microsoft-IIS/7.0) / Windows Server 2008
>>
>> I'm trying to do a force down a file (exe) and record if download  
>> was completed
>>
>> It works on Apache/ OS X
>>
>> Thanks
>> Frank
>>
>> Here's the script
>> ---------------------------------------------------
>> $filename = $_GET['file'];
>>
>> // required for IE, otherwise Content-disposition is ignored
>> if(ini_get('zlib.output_compression')) ini_set 
>> ('zlib.output_compression', 'Off');
>>
>> $file_extension = strtolower(substr(strrchr($filename,"."),1));
>>
>> if( $filename == "" ) {
>>  //echo "<html><title>eLouai's Download Script</title><body>ERROR:  
>> download file NOT SPECIFIED. USE force-download.php?file=filepath</ 
>> body></html>";
>>  exit;
>> } elseif ( ! file_exists( $filename ) ) {
>>  //echo "<html><title>eLouai's Download Script</title><body>ERROR:  
>> File not found. USE force-download.php?file=filepath</body></html>";
>>  exit;
>> };
>> switch( $file_extension )
>> {
>>  case "pdf": $ctype="application/pdf"; break;
>>  case "exe": $ctype="application/octet-stream"; break;
>>  case "zip": $ctype="application/zip"; break;
>>  case "doc": $ctype="application/msword"; break;
>>  case "xls": $ctype="application/vnd.ms-excel"; break;
>>  case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
>>  case "gif": $ctype="image/gif"; break;
>>  case "png": $ctype="image/png"; break;
>>  case "jpeg":
>>  case "jpg": $ctype="image/jpg"; break;
>>  default: $ctype="application/force-download";
>> }
>>
>> header("Pragma: public"); // required
>> header("Expires: 0");
>> header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
>> header("Cache-Control: private",false); // required for certain  
>> browsers
>> header("Content-Type: $ctype");
>> // change, added quotes to allow spaces in filenames, by Rajkumar  
>> Singh
>> header("Content-Disposition: attachment; filename=\"".basename 
>> ($filename)."\";" );
>> header("Content-Transfer-Encoding: binary");
>> header("Content-Length: ".filesize($filename));
>>
>> $bytes_send = 0;
>> $size = filesize($filename);
>> $file = fopen($filename,"rb");
>> if(isset($_SERVER['HTTP_RANGE'])) fseek($file, $range);
>> while(!feof($file) ){ // if we haven't got to the End Of File
>> 	$buffer = fread($file, 1024*8);
>> 	print($buffer);//read 8k from the file and send to the user
>> 	flush();//force the previous line to send its info
>> 	$bytes_send += strlen($buffer);
>> 	if (connection_aborted()){ //check the connection, if it has  
>> ended...
>> 		fclose($file);//close the file
>> 		die(); //kill the script
>> 	}
>> }
>> if( connection_aborted() ) die();
>>
>> fclose($file);//close the file
>>
>> if( $size == $bytes_send){
>> 	// record download was completed
>> }
>> exit;
>> ---------------------------------------------------
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list



More information about the FX.php_List mailing list