2010-09-02 62 views
0

对于某些无限制的带宽类型,让用户不断下载您的产品并不断忘记他们放置并重新下载它的位置可能会很方便。但是,由于保释担保人对死因裁判员说,当他在一周两米的麻袋中捕获这一周时,对稀缺性的认识才是智慧的开始,我想为我们解救麻烦。有没有办法告诉浏览器在下载EXE时禁用“运行”按钮?

这是我在PHP

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); 

现在这样做是有另一条线,我可以补充一点,会神奇地混淆所有的浏览器到思想是没有办法的任何操作系统可能可能与这个疙瘩字节做任何事除了将它放在一个安全的位置让主人在他或她的闲暇时摆弄?

回答

2

据我所知,没有,没有。文件下载由浏览器处理,它提供了它认为合适的选项。您可以可能能够使用Java或Flash中的自定义应用程序来做到这一点,但我并不是100%,因为当它提示下载时,浏览器仍然可能胜过该应用程序。

或者,您可以让用户通过匿名FTP帐户下载文件,但这需要用户了解如何使用FTP客户端,并且需要在其机器上安装FTP客户端才能显示弹出对话框。

+0

这几乎是我在想什么,虽然Flash方法可能是一种新颖的解决方案。 – 2010-09-02 16:07:21

2

如果他们有用户帐户,一种解决方案是简单地限制他们每个帐户允许下载的次数。另一个选择可能是将.exe粘贴到一个zip文件中,因此它不能简单地'运行'...虽然浏览器可能尝试在临时文件中显示内容。如果你还没有安装,你也可以使用安装程序,并配置应用程序使其不能从浏览器“运行”,但必须正确安装。这样图标/开始菜单条目就可以用于下一次使用。

2

如果指定文件的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 
相关问题