首页 > 编程语言 >php获取FTP服务器中文件内容返回给前端

php获取FTP服务器中文件内容返回给前端

时间:2024-09-03 14:52:25浏览次数:12  
标签:FTP ftp server SSL 服务器 php config size

有一个需求是访问存储在群辉Synology NAS上的图片,https://ip:port/path/to/image.jpg,用浏览器打开会出现“您的连接不是私密/安全连接”错误。

网上检索资料发现可能是因为缺少SSL证书的关系。

引用 https://www.cloudflare-cn.com/learning/ssl/connection-not-private-explained/  中的内容介绍:

此错误是由网站的 SSL 证书(丢失、过期或并非由合法证书颁发机构颁发)导致,或者是客户端由于其他原因无法访问它。对于通过安全的 HTTPS 连接提供网站服务而言,SSL 证书是必需的。没有 SSL 证书的网站无法证明其身份,无法加密通信。

 

不知什么缘故,NAS没有配置或者没有办法使用http访问。最终确定了使用FTP访问的方式。

按照之前使用FTP的方式,将文件从远程图片server下载下来存储在后端server,然后将文件地址返回给前端访问。然而,图片下载到后端server几乎不会复用,还会浪费server空间,就要看下有没有办法把文件内容直接返回给前端。然后就找到了这种写法,记录下:

test.html

<img src="http://localhost:3000/test.php" one rror="this.src='images/nopicture.jpg'" />

test.php

<?php

$remote_file = "/path/to/img.jpg";
$ftp_config = [
    'ip' => '',
    'port' => '',
    'username' => '',
    'password' => '',
    'timeout' => 10
];
$ftp = ftp_connect($ftp_config['ip'], $ftp_config['port'], $ftp_config['timeout']);
if ($ftp) {
    $login_result = ftp_login($ftp, $ftp_config['username'], $ftp_config['password']);
    if ($login_result) {
        ftp_pasv($ftp, true);
        $size = ftp_size($ftp, $remote_file);
        if ($size > 0) {
            header("Content-Type: application/octet-stream");
            header("Content-Disposition: attachment; filename=" . basename($remote_file));
            header("Content-Length: $size");
            ftp_get($ftp, 'php://output', $remote_file, FTP_BINARY);
            ftp_close($ftp);
        }
    }
}

将ftp_get到的文件内容输出到标准输出,以流的方式返回给前端。

标签:FTP,ftp,server,SSL,服务器,php,config,size
From: https://www.cnblogs.com/caroline2016/p/18394614

相关文章

  • jmeter监控服务器工具jp@gc - PerfMon Metrics Collector(ServerAgent)
    需要在被测服务器上安装ServerAgent。然后在jmeter上安装插件jpgc-StandardSet一、在服务器上安装ServerAgentSeverAgent:这个工具,可以和jmeter集成,在jmeter的GUI界面可以看到数据。链接:https://pan.baidu.com/s/1k3xlXk35YfPmS17-2ZFBnA?pwd=5s4n提取码:5s4n......
  • Java、python、php版 舞蹈工作室管理系统 舞蹈课程预约平台(源码、调试、LW、开题、PPT
    ......
  • DzzOffice PHP 性能优化
    PHP的优势之一是其高速执行能力,然而,我们不应因此忽视对PHP代码进行优化处理的重要性。未经优化的逻辑将导致整个程序执行效率的降低。以下是对几个常见问题的分析:文件绝对路径在includes和requires中使用绝对路径,这样在分析路径花的时间更少。循环与函数在循环里别用函数,例......
  • uniapp 微信小程序获取头像,上传服务器
    html头像UI<buttonclass="user-avatarflex-center"open-type="chooseAvatar"@chooseavatar="onChooseAvatar"><imageclass="img":src="showAvatat()"mode="scaleToFill"/>......
  • 5分钟部署Prometheus+Grafana批量监控Linux服务器
    文章目录一键安装NodeExporter安装prometheus创建数据存储目录创建配置文件下载运行Prometheus安装Grafana创建数据目录下载运行Grafana配置Grafana监控Linux服务器登录首次登录后设置密码添加数据源选择prometheus填写prometheus地址导入模板辛苦您也关注下公众号,感谢!本文......
  • 【最新原创毕设】基于微信小程序的老年人健康医疗信息服务平台设计+24246(免费领源码)可
    摘 要老年人健康是社会关注的重点之一,随着我国人口老龄化程度的增加,老年人的健康问题逐渐凸显。为了更好地满足老年人的健康需求,提高医疗服务质量和效率,开发一个基于SpringBoot的老年人健康医疗信息服务平台是十分必要的。老年人健康医疗信息服务平台利用Java语言,通过spring......
  • php邮箱服务器怎么搭建?如何构建服务器?
    php邮箱服务器配置教程指南?php邮件服务器如何搭建?搭建一个稳定高效的php邮箱服务器,不仅可以提升邮件传输的效率,还能增强数据的安全性。那么,如何着手搭建这样一个服务器呢?AokSend将详细探讨php邮箱服务器的搭建步骤。php邮箱服务器:配置环境配置php邮箱服务器环境是搭建过程......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    目 录摘要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 自助洗衣房管理系统系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析......
  • 记一次学习--HIDS-phpwebshell绕过
    目录第一个样本代码分析结果第二个样本代码分析结果第三个样本 结果第四个样本结果 第五个样本结果第六个样本结果 第七个样本结果第八个样本(通过session绕过)第九个样本第十个样本第十一个样本(自己改变自己)第十二个样本结果第十三个样本(优先队列......
  • PHP批量修改MySQL数据表字符集为utf8mb4/utf8mb4_unicode_ci
    编码大全可参考我之前的文章:快速理解ASCII、GBK、Unicode、UTF-8、ANSI批量修改注意这是DDL操作,操作过程会锁表(元数据锁),平均1秒能够转码3张表(数据量不大)。亲测操作过后没有数据异常,推荐执行前备份。//接手一些老项目,需要修改编码。$host='';$db='';$user='';$pa......