首页 > 代码库 > php的文件下载

php的文件下载

 * 下载文件
     *
     * @param string $downloadFile            
     * @param string $downloadName            
     */
    private function downLoad($downloadFile, $downloadName) {
        header ( "Cache-Control: public" );
        header ( "Content-Description: File Transfer" );
        header ( ‘Content-disposition: attachment; filename=‘ . $downloadName ); // 文件名
        header ( "Content-Type: application/zip" ); // zip格式的
        header ( "Content-Transfer-Encoding: binary" ); // 告诉浏览器,这是二进制文件
        header ( ‘Content-Length: ‘ . filesize ( $downloadFile ) ); // 告诉浏览器,文件大小
        @readfile ( $downloadFile );
    }
    ------------------------------------------------------------------------------------

/**
     * 客户授信申请附件下载
     */
    public function attachmentDownloadAction(){
        $request = $this->getRequest();
        
        $filePath = $request->getParam(‘filePath‘);
        $filePath = Zend_Filter::filterStatic ( $filePath, ‘StringTrim‘ );
        $filePath = Zend_Filter::filterStatic ( $filePath, ‘StripTags‘ );
        $filePath = APPLICATION_PATH."/../public".$filePath;
        
        $fileName = $request->getParam(‘fileName‘);
        $fileName = Zend_Filter::filterStatic ( $fileName, ‘StringTrim‘ );
        $fileName = Zend_Filter::filterStatic ( $fileName, ‘StripTags‘ );
        $fileName = iconv("UTF-8", "GB2312", $fileName);
        
        if (file_exists($filePath)) {
            $this->attachmentDownload($filePath,$fileName);
        } else {
            throw new Member_Model_NotExist_Exception(‘附件不存在!‘);
        }
    }
    private function attachmentDownload ($filePath,$fileName)
    {
        $file = file_get_contents($filePath);
        $this->getResponse()
            ->setBody($file)
            ->setHeader(‘Content-Type‘, ‘application/octet-stream‘)
            ->setHeader(‘Content-Disposition‘,
                ‘attachment; filename="‘.$fileName.‘"‘)
            ->setHeader(‘Content-Length‘, strlen($file));
        
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        
        header(‘Set-Cookie: fileDownload=true; path=/‘);
        $this->getResponse()->sendResponse();
    }