Forzare un download anche su IE

5 marzo 2008 at 15:14 Lascia un commento

Molti sanno che è possibile, grazie ad un corretto uso degli headers, forzare il download di un file. Questo significa che è possibile ad esempio linkare un’immagine JPG facendo in modo che essa non si apra ma al suo posto compaia la finestra “Salva con nome…”.

Internet Explorer naturalmente complica le cose! Gli piace molto aggiungere al nome del file parentesi sia tonde che quadre, nonchè convertire caratteri vari, con comprensibile sgomento di utenti e sviluppatori. In particolare, spazi e punti nel nome del file provocano questi strani comportamenti, tanto che tempo fa partecipai sul forum su PHP di HTML.it alla realizzazione di una pillola sul tema.

Il frutto della discussione fu questa funzione:

function forceDownload($file) {
	/**
	 * Function forceDownload:
	 *	download any type of file if it exists and is readable
	 * -------------------------------------
	 * @author		Andrea Giammarchi
	 * @date		18/01/2005 [17/05/2006]
	 * @compatibility	PHP >= 4.3.0
	 */
	if(file_exists($file) && is_readable($file)) {
		$filename = basename($file);
		if(strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), 'MSIE') !== false && strpos($filename, '.') !== false) {
			$parsename = explode('.', $filename);
			$last = count($parsename) - 1;
			$filename = implode('%2E', array_slice($parsename, 0, $last));
			$filename .= '.'.$parsename[$last];
		}
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename="'.$filename.'"');
		header('Content-Length:'.filesize($file));
		header('Content-Transfer-Encoding: binary');
		if(@$file = fopen($file, "rb")) {
			while(!feof($file))
				echo fread($file, 8192);
			fclose($file);
		}
		exit(0);
	}
}

Fonte: http://www.devpro.it/php4_id_72.html

Entry filed under: PHP. Tags: .

Area cliccabile striminzita? Allarghiamola OpenSocial, primi accordi verso l’aggregazione

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Trackback this post  |  Subscribe to the comments via RSS Feed


Categorie

JavaScript String .replace

Archivi

Seguimi su Twitter


%d blogger cliccano Mi Piace per questo: