代码之家  ›  专栏  ›  技术社区  ›  Peter Turner

有没有方法告诉浏览器在下载exe时禁用“运行”按钮?

  •  0
  • Peter Turner  · 技术社区  · 15 年前

    对于某些无限制的带宽类型来说,让您的用户不断下载您的产品,并不断忘记将其放在何处,然后重新下载可能比较方便。但是,正如保释担保人对验尸官说的那样,对缺乏证据的认知是智慧的开始,因为他用一个两米长的麻袋装了本周的捕获物,我想为我们省去麻烦。

    下面是我用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);
    

    是否还有另一行我可以添加,这将神奇地混淆所有浏览器认为没有任何操作系统可以做任何事情,除了把它放在一个安全的位置,让它的主人在他或她的闲暇时间摆弄?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jim    15 年前

    据我所知,没有,没有。文件下载由浏览器处理,并根据需要提供选项。你 可以 可以用Java或Flash中的自定义应用程序来实现这一点,但我不是100%,因为当浏览器提示下载时,它仍可能胜过该应用程序。

    或者,您可以让用户通过匿名ftp帐户下载该文件,但这要求用户了解如何使用ftp客户机,并要求其计算机上的ftp客户机弹出对话框不显示。

        2
  •  2
  •   GrandmasterB    15 年前

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

        3
  •  2
  •   Chris    15 年前

    如果指定文件的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 
    
    推荐文章