PHP 7 SFTPはファイルをダウンロードし、そのダウンロードファイルの名前を変更する

3561 ワード

SFTPクラス
 '',//sftp     
        'port' => ,//sftp     
        'username' => '', //sftp      
        'password' => '' //sftp     
    ];

    //    NULL
    private $conn = NULL;

    //    
    public function __construct()
    {
        $this->connect();
    }


    public function connect()
    {
        $this->conn = ssh2_connect($this->config['host'], $this->config['port']); //  
        if(!ssh2_auth_password($this->conn, $this->config['username'], $this->config['password']))
        {
            echo json_encode([
                'code' => 500,
                'msg'  => '            ',
                'data' => null
            ]);die;
        }
    }

    //           ,    
    public function downftp($remote, $local)
    {
        $ressftp = ssh2_sftp($this->conn);
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='."ssh2.sftp://".$ressftp."/upload/".$remote);
        header('Content-Transfer-Encoding: binary');
        Header("Accept-Ranges: bytes");
        header('Content-Disposition: attachment; filename=' . $local);
        header('Content-Type: application/octet-stream; name=' . $local);
        readfile("ssh2.sftp://".$ressftp."/upload/".$remote);

        /**
         *  sftp        ,         
         */
        //return copy("ssh2.sftp://".$ressftp."/upload/".$remote, __DIR__.'/../../public/'.$local);
        //return copy("ssh2.sftp://".$ressftp."/upload/".$remote, $local);
        //return ssh2_scp_recv($this->conn, $remote, $local);
    }

    //           ,  ftp     
    public function upftp( $local,$remote, $file_mode = 0777)
    {
        $ressftp = ssh2_sftp($this->conn);
        return copy($local,"ssh2.sftp://{$ressftp}".'gongwenliuzhuan/upload/'.$remote);
    }

}

sftpサービス上のファイルをダウンロードするインタフェースのファイルは、対応するパラメータを転送します.sftpサーバにファイルがあるかどうかを検出する必要がある場合は、自分で処理してください.
 500,
        'msg'  => 'sftpFileName is null',
        'data' => null
    ]);die;
}

//     
//$down_name = __DIR__.'/../../../public/'.$sftp_name;
//     
$new_name = trim($_GET['new_name']);
//      
$type = strtolower(trim($_GET['type']));

if ($new_name == ''){
    echo json_encode([
        'code' => 500,
        'msg'  => 'newFileName is null',
        'data' => null
    ]);die;
}

if ($type == ''){
    echo json_encode([
        'code' => 500,
        'msg'  => 'fileType is null',
        'data' => null
    ]);die;
}

$down_name = $new_name.'.'.$type;
$my_sftp->downftp($sftp_name,$down_name);