Php 有没有办法告诉浏览器禁用;“运行”;下载EXE时的按钮?
对于某些无限带宽类型的用户来说,让他们不断下载您的产品并不断忘记将其放置在何处并重新下载,可能会很方便。但是,当保释金担保人用两米长的麻袋把本周的捕获物装进验尸官的时候,他对验尸官说,对资金短缺的认识是智慧的开始,我想省去我们的麻烦 下面是我在PHP中所做的Php 有没有办法告诉浏览器禁用;“运行”;下载EXE时的按钮?,php,download,mime-types,content-disposition,Php,Download,Mime Types,Content Disposition,对于某些无限带宽类型的用户来说,让他们不断下载您的产品并不断忘记将其放置在何处并重新下载,可能会很方便。但是,当保释金担保人用两米长的麻袋把本周的捕获物装进验尸官的时候,他对验尸官说,对资金短缺的认识是智慧的开始,我想省去我们的麻烦 下面是我在PHP中所做的 header("MIME-Version: 1.0"); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: post-check=0, pre-ch
header("MIME-Version: 1.0");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: post-check=0, pre-check=0");
header("Content-type: application/octet-stream");
header('Content-Length: ' . $filesize);
header('Content-Disposition: attachment; filename="' . basename($filename).'"');
header("Content-Transfer-Encoding: binary");
readfile($filename);
我能补充一句话吗?这句话会神奇地把所有浏览器弄糊涂,让他们认为任何操作系统都不可能对这一块字节做任何事情,除非把它放在某个安全的位置,让它的主人在空闲时摆弄它 据我所知,没有。文件下载由浏览器处理,并提供其认为合适的选项。你可以用Java或Flash定制应用程序来实现这一点,但我不是100%赞同,因为当浏览器提示下载时,它仍然可能胜过该应用程序
或者,您可以让用户通过匿名FTP帐户下载文件,但这需要用户了解如何使用FTP客户端,并且需要在他们的计算机上安装FTP客户端,才能不显示弹出对话框 据我所知,没有。文件下载由浏览器处理,并提供其认为合适的选项。你可以用Java或Flash定制应用程序来实现这一点,但我不是100%赞同,因为当浏览器提示下载时,它仍然可能胜过该应用程序
或者,您可以让用户通过匿名FTP帐户下载文件,但这需要用户了解如何使用FTP客户端,并且需要在他们的计算机上安装FTP客户端,才能不显示弹出对话框 如果他们有用户帐户,一个解决方案就是简单地限制每个帐户允许的下载次数。另一种选择可能是将.exe粘贴到zip文件中,这样它就不能简单地“运行”。。。尽管浏览器可能会尝试以任何方式在临时文件中显示内容。如果您还没有安装,您也可以使用安装程序,并将应用程序配置为无法从浏览器“运行”,但必须正确安装。这样,图标/开始菜单项就可以供下次使用。如果它们有用户帐户,一个解决方案就是简单地限制每个帐户允许的下载次数。另一种选择可能是将.exe粘贴到zip文件中,这样它就不能简单地“运行”。。。尽管浏览器可能会尝试以任何方式在临时文件中显示内容。如果您还没有安装,您也可以使用安装程序,并将应用程序配置为无法从浏览器“运行”,但必须正确安装。这样,图标/开始菜单项就可以供下次使用。如果指定文件的mimetype,浏览器将显示它应该显示的内容。例如,pdf将提示在pdf查看器中打开或保存,图像将使用图像应用程序或另存为打开,等等 看看这个:
$info = pathinfo($fileName);
header('Content-Description: File Transfer');
header('Content-Type: '.Mimetypes::get($info['extension']));
header('Content-Disposition: attachment; filename=' . basename($fileName));
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($fileName));
class Mimetypes{
/**
* static isAllowed returns true for allowed extensions and false otherwise.
* method is static thus allowing is to be called without construction/
* instantiation of the object.
*
* @param string ext the file extension
* @return boolean true for allowed extension, false otherwise
*
*/
public static function isAllowed($ext){
$allowedFiletypes = array('jpg','gif','bmp','png', 'xls', 'doc', 'docx', 'txt', 'pdf'); // These will be the types of file that will pass the validation.
if(in_array($ext, $allowedFiletypes)){
return true;
}else{
return false;
}
}//end isAllowed($ext)
/**
* method get accepts an extension string as argument
* and returns the mimetype for this given argument
* if an entry exists in the map of extensions to
* mimetypes.
* if the extension is not defined function will return
* empty string.
*
*
*/
public static function get($ext){
$map = array(
'323'=>'text/h323',
'acx'=>'application/internet-property-stream',
'ai application/postscript',
'aif'=>'audio/x-aiff',
'aifc'=>'audio/x-aiff',
'aiff'=>'audio/x-aiff',
'asf'=>'video/x-ms-asf',
'asr'=>'video/x-ms-asf',
'asx'=>'video/x-ms-asf',
'au'=>'audio/basic',
'avi'=>'video/x-msvideo',
'axs'=>'application/olescript',
'bas'=>'text/plain',
'bcpio'=>'application/x-bcpio',
'bin'=>'application/octet-stream',
'bmp'=>'image/bmp',
'c'=>'text/plain',
'cat'=>'application/vnd.ms-pkiseccat',
'cdf'=>'application/x-cdf',
'cer'=>'application/x-x509-ca-cert',
'class'=>'application/octet-stream',
'clp'=>'application/x-msclip',
'cmx'=>'image/x-cmx',
'cod'=>'image/cis-cod',
'cpio'=>'application/x-cpio',
'crd'=>'application/x-mscardfile',
'crl'=>'application/pkix-crl',
'crt'=>'application/x-x509-ca-cert',
'csh'=>'application/x-csh',
'css'=>'text/css',
'dcr'=>'application/x-director',
'der'=>'application/x-x509-ca-cert',
'dir'=>'application/x-director',
'dll'=>'application/x-msdownload',
'dms'=>'application/octet-stream',
'doc'=>'application/msword',
'dot'=>'application/msword',
'dvi'=>'application/x-dvi',
'dxr'=>'application/x-director',
'eps'=>'application/postscript',
'etx'=>'text/x-setext',
'evy'=>'application/envoy',
'exe'=>'application/octet-stream',
'fif'=>'application/fractals',
'flr'=>'x-world/x-vrml',
'gif'=>'image/gif',
'gtar'=>'application/x-gtar',
'gz'=>'application/x-gzip',
'h'=>'text/plain',
'hdf'=>'application/x-hdf',
'hlp'=>'application/winhlp',
'hqx'=>'application/mac-binhex40',
'hta'=>'application/hta',
'htc'=>'text/x-component',
'htm'=>'text/html',
'html'=>'text/html',
'htt'=>'text/webviewhtml',
'ico'=>'image/x-icon',
'ief'=>'image/ief',
'iii'=>'application/x-iphone',
'ins'=>'application/x-internet-signup',
'isp'=>'application/x-internet-signup',
'jfif'=>'image/pipeg',
'jpe'=>'image/jpeg',
'jpeg'=>'image/jpeg',
'jpg'=>'image/jpeg',
'js'=>'application/x-javascript',
'latex'=>'application/x-latex',
'lha'=>'application/octet-stream',
'lsf'=>'/x-la-asf',
'lsx'=>'video/x-la-asf',
'lzh'=>'application/octet-stream',
'm13'=>'application/x-msmediaview',
'm14'=>'application/x-msmediaview',
'm3u'=>'audio/x-mpegurl',
'man'=>'application/x-troff-man',
'mdb'=>'application/x-msaccess',
'me'=>'application/x-troff-me',
'mht'=>'message/rfc822',
'mhtml'=>'message/rfc822',
'mid'=>'audio/mid',
'mny'=>'application/x-msmoney',
'mov'=>'video/quicktime',
'movie'=>'video/x-sgi-movie',
'mp2'=>'video/mpeg',
'mp3'=>'audio/mpeg',
'mpa'=>'video/mpeg',
'mpe'=>'video/mpeg',
'mpeg'=>'video/mpeg',
'mpg'=>'video/mpeg',
'mpp'=>'application/vnd.ms-project',
'mpv2'=>'video/mpeg',
'ms'=>'application/x-troff-ms',
'mvb'=>'application/x-msmediaview',
'nws'=>'message/rfc822',
'oda'=>'application/oda',
'p10'=>'application/pkcs10',
'p12'=>'application/x-pkcs12',
'p7b'=>'application/x-pkcs7-certificates',
'p7c'=>'application/x-pkcs7-mime',
'p7m'=>'application/x-pkcs7-mime',
'p7r'=>'application/x-pkcs7-certreqresp',
'p7s'=>'application/x-pkcs7-signature',
'pbm'=>'image/x-portable-bitmap',
'pdf'=>'application/pdf',
'pfx'=>'application/x-pkcs12',
'pgm'=>'image/x-portable-graymap',
'pko'=>'application/ynd.ms-pkipko',
'pma'=>'application/x-perfmon',
'pmc'=>'application/x-perfmon',
'pml'=>'application/x-perfmon',
'pmr'=>'application/x-perfmon',
'pmw'=>'application/x-perfmon',
'png'=>'image/png',
'pnm'=>'image/x-portable-anymap',
'pot'=>'application/vnd.ms-powerpoint',
'ppm'=>'image/x-portable-pixmap',
'pps'=>'application/vnd.ms-powerpoint',
'ppt'=>'application/vnd.ms-powerpoint',
'prf'=>'application/pics-rules',
'ps'=>'application/postscript',
'pub'=>'application/x-mspublisher',
'qt'=>'video/quicktime',
'ra'=>'audio/x-pn-realaudio',
'ram'=>'audio/x-pn-realaudio',
'ras'=>'image/x-cmu-raster',
'rgb'=>'image/x-rgb',
'rmi'=>'audio/mid',
'roff'=>'application/x-troff',
'rtf'=>'application/rtf',
'rtx'=>'text/richtext',
'scd'=>'application/x-msschedule',
'sct'=>'text/scriptlet',
'setpay'=>'application/set-payment-initiation',
'setreg'=>'application/set-registration-initiation',
'sh'=>'application/x-sh',
'shar'=>'application/x-shar',
'sit'=>'application/x-stuffit',
'snd'=>'audio/basic',
'spc'=>'application/x-pkcs7-certificates',
'spl'=>'application/futuresplash',
'src'=>'application/x-wais-source',
'sst'=>'application/vnd.ms-pkicertstore',
'stl'=>'application/vnd.ms-pkistl',
'stm'=>'text/html',
'svg'=>'image/svg+xml',
'sv4cpio'=>'application/x-sv4cpio',
'sv4crc'=>'application/x-sv4crc',
'swf'=>'application/x-shockwave-flash',
't'=>'application/x-troff',
'tar'=>'application/x-tar',
'tcl'=>'application/x-tcl',
'tex'=>'application/x-tex',
'texi'=>'application/x-texinfo',
'texinfo'=>'application/x-texinfo',
'tgz'=>'application/x-compressed',
'tif'=>'image/tiff',
'tiff'=>'image/tiff',
'tr'=>'application/x-troff',
'trm'=>'application/x-msterminal',
'tsv'=>'text/tab-separated-values',
'txt'=>'text/plain',
'uls'=>'text/iuls',
'ustar'=>'application/x-ustar',
'vcf'=>'text/x-vcard',
'vrml'=>'x-world/x-vrml',
'wav'=>'audio/x-wav',
'wcm'=>'application/vnd.ms-works',
'wdb'=>'application/vnd.ms-works',
'wks'=>'application/vnd.ms-works',
'wmf'=>'application/x-msmetafile',
'wps'=>'application/vnd.ms-works',
'wri'=>'application/x-mswrite',
'wrl'=>'x-world/x-vrml',
'wrz'=>'x-world/x-vrml',
'xaf'=>'x-world/x-vrml',
'xbm'=>'image/x-xbitmap',
'xla'=>'application/vnd.ms-excel',
'xlc'=>'application/vnd.ms-excel',
'xlm'=>'application/vnd.ms-excel',
'xls'=>'application/vnd.ms-excel',
'xlt'=>'application/vnd.ms-excel',
'xlw'=>'application/vnd.ms-excel',
'xof'=>'x-world/x-vrml',
'xpm'=>'image/x-xpixmap',
'xwd'=>'image/x-xwindowdump',
'z'=>'application/x-compress',
'zip'=>'application/zip'
);
if(array_key_exists($ext, $map)){
return $map[$ext];
}else{
return "";
}//end if(array_key_exists($ext, $map)) | else
}//end get($ext)
}//end class Mimetypes
如果指定文件的mimetype,浏览器将显示它应该显示的内容。例如,pdf将提示在pdf查看器中打开或保存,图像将使用图像应用程序或另存为打开,等等 看看这个:
$info = pathinfo($fileName);
header('Content-Description: File Transfer');
header('Content-Type: '.Mimetypes::get($info['extension']));
header('Content-Disposition: attachment; filename=' . basename($fileName));
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($fileName));
class Mimetypes{
/**
* static isAllowed returns true for allowed extensions and false otherwise.
* method is static thus allowing is to be called without construction/
* instantiation of the object.
*
* @param string ext the file extension
* @return boolean true for allowed extension, false otherwise
*
*/
public static function isAllowed($ext){
$allowedFiletypes = array('jpg','gif','bmp','png', 'xls', 'doc', 'docx', 'txt', 'pdf'); // These will be the types of file that will pass the validation.
if(in_array($ext, $allowedFiletypes)){
return true;
}else{
return false;
}
}//end isAllowed($ext)
/**
* method get accepts an extension string as argument
* and returns the mimetype for this given argument
* if an entry exists in the map of extensions to
* mimetypes.
* if the extension is not defined function will return
* empty string.
*
*
*/
public static function get($ext){
$map = array(
'323'=>'text/h323',
'acx'=>'application/internet-property-stream',
'ai application/postscript',
'aif'=>'audio/x-aiff',
'aifc'=>'audio/x-aiff',
'aiff'=>'audio/x-aiff',
'asf'=>'video/x-ms-asf',
'asr'=>'video/x-ms-asf',
'asx'=>'video/x-ms-asf',
'au'=>'audio/basic',
'avi'=>'video/x-msvideo',
'axs'=>'application/olescript',
'bas'=>'text/plain',
'bcpio'=>'application/x-bcpio',
'bin'=>'application/octet-stream',
'bmp'=>'image/bmp',
'c'=>'text/plain',
'cat'=>'application/vnd.ms-pkiseccat',
'cdf'=>'application/x-cdf',
'cer'=>'application/x-x509-ca-cert',
'class'=>'application/octet-stream',
'clp'=>'application/x-msclip',
'cmx'=>'image/x-cmx',
'cod'=>'image/cis-cod',
'cpio'=>'application/x-cpio',
'crd'=>'application/x-mscardfile',
'crl'=>'application/pkix-crl',
'crt'=>'application/x-x509-ca-cert',
'csh'=>'application/x-csh',
'css'=>'text/css',
'dcr'=>'application/x-director',
'der'=>'application/x-x509-ca-cert',
'dir'=>'application/x-director',
'dll'=>'application/x-msdownload',
'dms'=>'application/octet-stream',
'doc'=>'application/msword',
'dot'=>'application/msword',
'dvi'=>'application/x-dvi',
'dxr'=>'application/x-director',
'eps'=>'application/postscript',
'etx'=>'text/x-setext',
'evy'=>'application/envoy',
'exe'=>'application/octet-stream',
'fif'=>'application/fractals',
'flr'=>'x-world/x-vrml',
'gif'=>'image/gif',
'gtar'=>'application/x-gtar',
'gz'=>'application/x-gzip',
'h'=>'text/plain',
'hdf'=>'application/x-hdf',
'hlp'=>'application/winhlp',
'hqx'=>'application/mac-binhex40',
'hta'=>'application/hta',
'htc'=>'text/x-component',
'htm'=>'text/html',
'html'=>'text/html',
'htt'=>'text/webviewhtml',
'ico'=>'image/x-icon',
'ief'=>'image/ief',
'iii'=>'application/x-iphone',
'ins'=>'application/x-internet-signup',
'isp'=>'application/x-internet-signup',
'jfif'=>'image/pipeg',
'jpe'=>'image/jpeg',
'jpeg'=>'image/jpeg',
'jpg'=>'image/jpeg',
'js'=>'application/x-javascript',
'latex'=>'application/x-latex',
'lha'=>'application/octet-stream',
'lsf'=>'/x-la-asf',
'lsx'=>'video/x-la-asf',
'lzh'=>'application/octet-stream',
'm13'=>'application/x-msmediaview',
'm14'=>'application/x-msmediaview',
'm3u'=>'audio/x-mpegurl',
'man'=>'application/x-troff-man',
'mdb'=>'application/x-msaccess',
'me'=>'application/x-troff-me',
'mht'=>'message/rfc822',
'mhtml'=>'message/rfc822',
'mid'=>'audio/mid',
'mny'=>'application/x-msmoney',
'mov'=>'video/quicktime',
'movie'=>'video/x-sgi-movie',
'mp2'=>'video/mpeg',
'mp3'=>'audio/mpeg',
'mpa'=>'video/mpeg',
'mpe'=>'video/mpeg',
'mpeg'=>'video/mpeg',
'mpg'=>'video/mpeg',
'mpp'=>'application/vnd.ms-project',
'mpv2'=>'video/mpeg',
'ms'=>'application/x-troff-ms',
'mvb'=>'application/x-msmediaview',
'nws'=>'message/rfc822',
'oda'=>'application/oda',
'p10'=>'application/pkcs10',
'p12'=>'application/x-pkcs12',
'p7b'=>'application/x-pkcs7-certificates',
'p7c'=>'application/x-pkcs7-mime',
'p7m'=>'application/x-pkcs7-mime',
'p7r'=>'application/x-pkcs7-certreqresp',
'p7s'=>'application/x-pkcs7-signature',
'pbm'=>'image/x-portable-bitmap',
'pdf'=>'application/pdf',
'pfx'=>'application/x-pkcs12',
'pgm'=>'image/x-portable-graymap',
'pko'=>'application/ynd.ms-pkipko',
'pma'=>'application/x-perfmon',
'pmc'=>'application/x-perfmon',
'pml'=>'application/x-perfmon',
'pmr'=>'application/x-perfmon',
'pmw'=>'application/x-perfmon',
'png'=>'image/png',
'pnm'=>'image/x-portable-anymap',
'pot'=>'application/vnd.ms-powerpoint',
'ppm'=>'image/x-portable-pixmap',
'pps'=>'application/vnd.ms-powerpoint',
'ppt'=>'application/vnd.ms-powerpoint',
'prf'=>'application/pics-rules',
'ps'=>'application/postscript',
'pub'=>'application/x-mspublisher',
'qt'=>'video/quicktime',
'ra'=>'audio/x-pn-realaudio',
'ram'=>'audio/x-pn-realaudio',
'ras'=>'image/x-cmu-raster',
'rgb'=>'image/x-rgb',
'rmi'=>'audio/mid',
'roff'=>'application/x-troff',
'rtf'=>'application/rtf',
'rtx'=>'text/richtext',
'scd'=>'application/x-msschedule',
'sct'=>'text/scriptlet',
'setpay'=>'application/set-payment-initiation',
'setreg'=>'application/set-registration-initiation',
'sh'=>'application/x-sh',
'shar'=>'application/x-shar',
'sit'=>'application/x-stuffit',
'snd'=>'audio/basic',
'spc'=>'application/x-pkcs7-certificates',
'spl'=>'application/futuresplash',
'src'=>'application/x-wais-source',
'sst'=>'application/vnd.ms-pkicertstore',
'stl'=>'application/vnd.ms-pkistl',
'stm'=>'text/html',
'svg'=>'image/svg+xml',
'sv4cpio'=>'application/x-sv4cpio',
'sv4crc'=>'application/x-sv4crc',
'swf'=>'application/x-shockwave-flash',
't'=>'application/x-troff',
'tar'=>'application/x-tar',
'tcl'=>'application/x-tcl',
'tex'=>'application/x-tex',
'texi'=>'application/x-texinfo',
'texinfo'=>'application/x-texinfo',
'tgz'=>'application/x-compressed',
'tif'=>'image/tiff',
'tiff'=>'image/tiff',
'tr'=>'application/x-troff',
'trm'=>'application/x-msterminal',
'tsv'=>'text/tab-separated-values',
'txt'=>'text/plain',
'uls'=>'text/iuls',
'ustar'=>'application/x-ustar',
'vcf'=>'text/x-vcard',
'vrml'=>'x-world/x-vrml',
'wav'=>'audio/x-wav',
'wcm'=>'application/vnd.ms-works',
'wdb'=>'application/vnd.ms-works',
'wks'=>'application/vnd.ms-works',
'wmf'=>'application/x-msmetafile',
'wps'=>'application/vnd.ms-works',
'wri'=>'application/x-mswrite',
'wrl'=>'x-world/x-vrml',
'wrz'=>'x-world/x-vrml',
'xaf'=>'x-world/x-vrml',
'xbm'=>'image/x-xbitmap',
'xla'=>'application/vnd.ms-excel',
'xlc'=>'application/vnd.ms-excel',
'xlm'=>'application/vnd.ms-excel',
'xls'=>'application/vnd.ms-excel',
'xlt'=>'application/vnd.ms-excel',
'xlw'=>'application/vnd.ms-excel',
'xof'=>'x-world/x-vrml',
'xpm'=>'image/x-xpixmap',
'xwd'=>'image/x-xwindowdump',
'z'=>'application/x-compress',
'zip'=>'application/zip'
);
if(array_key_exists($ext, $map)){
return $map[$ext];
}else{
return "";
}//end if(array_key_exists($ext, $map)) | else
}//end get($ext)
}//end class Mimetypes
这正是我所想的,尽管Flash方法可能是一个新的解决方案。这正是我所想的,尽管Flash方法可能是一个新的解决方案。