您现在的位置是:网站首页>PHP技术PHP技术

自己写的FTP文件管理上传下载系统源码

草谷2019-04-24PHP技术

简介在工作中使用MACOS系统的遇到过一个问题就是使用远程连接工具(Microsft Remote Desktop)连接windows操作系统的服务器时,无法与服务器之间互相复制粘贴文件.这导致当我们需要上传程序文件\或者将程序文件下载修改时非常不方便.所以自己写了一个文件管理系统

自己写的一个文件管理系统

在工作中使用MACOS系统的遇到过一个问题
就是使用远程连接工具(Microsft Remote Desktop)连接windows操作系统的服务器时,无法与服务器之间互相复制粘贴文件.
这导致当我们需要上传程序文件\或者将程序文件下载修改时非常不方便.


解决这个问题主要有以下几种方案

1\通过虚拟机中转---例如在macos中安装windows虚拟机,通过虚拟机与远程服务器连接就可以互拷文件
2\通过云盘中转---例如本地上传到云,服务器再从云客户端下载
3\通过FTP客户端或系统环境面板(如AMH\宝塔等)提供的线上FTP工具---开放服务器21端口,并且在服务器配置安装IIS,以及本地的FTP客户端

4\通过我做的文件管理系统---通过账号密码登录,直接上传下载

以上几种方案我都使用过,整体来说都是有利有弊,本帖主要为大家推荐第四种方案,因为它配置方便\使用方便\不依赖于服务器其他环境(只是一个php程序,体积1M多)


115034cfdd5rgda28z1czy.png 


文件系统只有权对项目中的webroot(可自定义)目录进行上传\下载\删除操作.

将这个小程序部署到服务器中以后,我们可以很方便的将所需要的文件进行上传和下载.
一次部署,免去了每次开关虚拟机\登录网盘中转等繁琐步骤,一键下载\一键上传,真的是很的!

顺便说下我在开发这个程序时遇到过的一个问题:
通过mac系统上传的中文名文件,到服务器上之后,其文件名变成了乱码.
相反,在服务器上创建的中文名文件或文件夹,在系统中显示也是乱码.
通过查找,我发现这是因为mac使用的内核是和windows的系统对于中文文件名的编码格式是不同而造成的.

所以在这强调一下:mac使用的内核和windows的系统对于中文文件名的编码格式不同,所以出现了中文文件名乱码的问题.

那么解决方法是在上传后,写入操作系统的时候使用如下函数:   

iconv('UTF-8','gb2312',$path);

第一个参数是原编码方式,
第二个参数是转换后的编码方式,
第三个参数是需要转换的字符串(文件名)

所以通过这个函数在往windows中复制和写入文件的时候,文件名需要从UTF-8转换成GB2313,而通过程序读取程序文件的时候,需要将读到的文件名再重新转换成UTF-8
这样完美解决两个操作系统文件名不同而出现的中文名乱码问题.

回到正题
这个小程序程序没有使用任何框架,也无需依附数据库
前端采用的是bootstrap,后端完全是源生PHP,可跑在5.X的任何一个php版本下.
目录结构也比较简单明了,如下图

115044g4mvkpnoenv4jiua.png 

另外再说一点,文件上传的体积限制,主要有三个地方:
1\程序文件中的 lib\upload.class.php 文件中,构造函数中的$maxSize 的参数.单位是字节,1M=1000000;
2\php.ini文件中的 post_max_size = 100M  //post数据的最大体积限制
3\php.ini文件中的 upload_max_filesize = 100M  //可上传数据的最大体积限制
最终可上传的文件体积,取决于以上三个值的最小值(当然,也取决于你的网速,所以大文件建议拆分成小文件压缩包进行上传,另外暂未实现批量上传,所以暂时只能一个一个文件上传)

源程序下载地址:
https://pan.baidu.com/s/1mhHhjKk

很赞哦! (3)

文章评论

      2019-04-28Vision

      给自己赞一个,自己完成的项目,很有心流体验。

    共有1条评论 来说两句吧...

    登陆后评论