PHP7 SFTP下载文件并重命名该下载文件

SFTP类

<?php
declare(strict_types=1);
namespace common;
use http\Exception;

date_default_timezone_set('PRC');
header("Content-Type: text/html; charset=utf-8");
class MySftp
{
    // 初始配置为NULL
    private $config = [
        'host' => '',//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服务器上是否有该文件,请自行处理。

<?php
declare(strict_types=1);
header('Access-Control-Allow-Origin:*');
date_default_timezone_set('Asia/Shanghai');
include '../../../common/MySftp.php';

$my_sftp = new \common\MySftp();

//sftp服务器上的文件名(包含路径)
$sftp_name = trim($_GET['file_name']);
if ($sftp_name == ''){
    echo json_encode([
        'code' => 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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: c sftp是一种安全的文件传输协议,用于在计算机之间传输文件。它基于SSH协议,可加密文件传输,确保数据的机密性和完整性。 要使用c sftp下载文件,首先需要建立与远程服务器的连接。使用sftp命令,输入服务器的IP地址和用户名进行认证登录。 成功登录到服务器后,使用get命令下载文件。给定要下载文件的路径和文件名,sftp会从服务器上复制文件到本地计算机上指定的位置。可以自定义本地文件的名称,使用"get 远程文件路径 本地文件路径" 的命令格式。 下载文件时可以指定下载的位置。如果要下载文件在服务器上的特定目录中,可以使用"cd"命令切换到该目录,再使用"get"命令下载文件下载多个文件时,可以使用通配符来匹配文件名。例如,使用"get *.txt"命令可以同时下载服务器上所有以".txt"扩展名结尾的文件下载完成后,可以使用"bye"命令关闭与服务器的连接。 总结起来,c sftp下载文件的步骤如下: 1. 与服务器建立连接,登录认证; 2. 使用"get"命令下载文件,指定远程文件路径和本地文件路径; 3. 可以切换到特定目录后再执行下载命令; 4. 使用通配符来下载多个文件; 5. 使用"bye"命令关闭连接。 使用c sftp下载文件可以实现安全且方便的文件传输,适用于各种类型的网络环境,例如在企业内部或远程办公中传输敏感数据。 ### 回答2: SFTP是一种安全的文件传输协议,它通过SSH通道传输文件,并提供了对数据的加密和验证。使用SFTP下载文件可以保证文件传输的安全性和完整性。以下是如何使用SFTP下载文件的步骤: 1. 确保您已经安装了SFTP客户端软件,例如FileZilla、WinSCP等。这些软件都是免费的,您可以从官方网站下载和安装。 2. 打开SFTP客户端软件,并连接到远程服务器。首先,您需要提供远程服务器的IP地址、端口号、用户名和密码等登录信息。在连接时,确保选择了SFTP协议。 3. 登录成功后,您将看到远程服务器的文件目录结构。浏览您要下载文件的目录,确认文件的位置。 4. 选择要下载文件,右键单击并选择“下载”或类似的选项。如果您要下载整个文件夹,可以选择“下载文件夹”。 5. 指定本地保存文件的路径。选择一个目录来保存下载文件,然后点击“确定”。 6. 下载过程开始后,您可以在软件的界面上查看下载进度和速度。等到下载完成后,您将在指定的本地路径下找到下载文件。 在使用SFTP下载文件时,需要注意以下几点: - 确保您具有足够的权限访问远程服务器,并拥有所需的文件下载权限。 - 确保输入的登录信息正确无误,包括远程服务器的IP地址、端口号、用户名和密码等。 - 确保网络连接稳定,并且远程服务器正常运行。 总的来说,使用SFTP下载文件相对安全可靠,可以保护您的文件不被篡改或窃取。在进行文件传输时,建议使用SFTP来替代常规的FTP协议,以提高数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsswm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值