ftp 传文件完整代码(二)

一、数据库查询数据 根据要求生成文件

    

/**
     * 根据$date参数,生成账单文件名。
     *
     * @param DateTime $date 日期。
     *
     * @return string
     */
    protected function _billFileName($date)
    {
        # 账单文件名规范:DZ+[渠道ID]+[八位日期 YYYYMMDD],渠道代码由BOSS系统提供。例如:DZ800020110916
        return sprintf('DGDZ%s%s', $this->appId, date('Ymd', strtotime($date)));
    }


    /**
     * 根据$fileName参数,生成路径。
     *
     * @param string $fileName 文件名。
     *
     * @return string
     */
    protected function _billRealFileName($fileName)
    {
         return SKIHAT_PATH_APP_MODULES . '/docs/' . $fileName;
        //return SKIHAT_PATH_APP_PUBLICS . '/youjia/' . $fileName;
    }

二 、上传ftp  

/**
     * @const string 渠道代码
     */
    public $appId = 'test00000096868';

    /**
     * @const string ftp密码
     */
    public $ftpUser = 'ftp://172.16.84.26/';

    /**
     * @const string ftp密码
     */
    public $ftpPWD = 'yjpt:yjpt2018.';
  
     /**
     * 将$fileName参数,将指定的对账文件上传到FTP地址。
     *
     * @param string $fileName 文件名。
     *
     * @return bool
     */
    public function uploadComboBillFile($fileName)
    {
        # 获取真实文件名。
        $realFile = $this->_billRealFileName($fileName);

        if (is_file($realFile) == false) {
            return $this->error($this->errorBillFile);
        }

        $fileRes = fopen($realFile, 'r');

        if ($fileRes == false) {
            return $this->error($this->errorBillFile);
        }

        # 使用curl上传文件到FTP目录。
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $this->ftpUser . $fileName);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        # 设置超时时间
        curl_setopt($curl, CURLOPT_TIMEOUT, 300);
        curl_setopt($curl, CURLOPT_USERPWD, $this->ftpPWD);

        # 设置上传参数。
        curl_setopt($curl, CURLOPT_UPLOAD, 1);
        curl_setopt($curl, CURLOPT_INFILE, $fileRes);
        curl_setopt($curl, CURLOPT_INFILESIZE, filesize($realFile));

        # 执行上传业务
        $rtn = curl_exec($curl);
        $error = curl_error($curl);

        fclose($fileRes);
        curl_close($curl);
        return $error ? $this->error($error) : true;
    }
原文地址:https://www.cnblogs.com/sanqiyi/p/9591381.html