各位老铁们好,相信很多人对ftp直接导入网站源码分享都不是特别的了解,因此呢,今天就来为大家分享下关于ftp直接导入网站源码分享以及ftp上传源码教程的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
一起学习PHP中的FTP操作
FTP服务可以说是互联网各大协议服务中仅次于HTTP的存在。在之前玩虚拟空间的时候,服务商一般提供的就是一个FTP来让我们上传下载代码并且管理主机中的内容。即使是现在云服务器的时代,也有很多人会搭建FTP服务来进行代码的管理,当然,这个已经不多见了。而在企业内部,FTP也经常用于企业内部的文件共享管理,这个相对来说就常见很多。所以说,FTP服务依然是很重要的一个功能,对于我们PHP来说,当然也是完全支持的。
除了代码上传之外,在某些业务场景中,比如在云服务还不是非常流行的年代,往往我们会把图片、大文件这些素材存放到一台单独的有着大容量硬盘的服务器上。这时,在后台上传这些文件的时候,我们就需要使用FTP的功能将业务服务器上传的文件再通过FTP服务传输到文件服务器中,这就是在业务环境下FTP最典型的应用。
在PHP中,FTP扩展是包含在源码中的,也就是说,我们在编译的时候直接加上–with-ftp就可以了,非常地方便。如果编译的时候没有安装的话,后期在源码包中直接找到FTP目录扩展安装就可以了。
连接FTP服务器
首先我们来看一下如果连接FTP服务,在这里我们使用虚拟机搭建了一台FTP服务器,然后从本地连接。
$conn=ftp_connect(&34;);\n\nftp_login($conn,&39;,&39;);\n\n$pwdInfo=ftp_pwd($conn);\n$dirInfo=ftp_nlist($conn,$pwdInfo);\n\nprint_r($pwdInfo);///home/testftp\nprint_r($dirInfo);\n//Array\n//(\n//)\n\nftp_close($conn);\n
通过ftp_connect()就可以拿到一个FTP连接句柄,然后使用ftp_login()进行登录。登录之后就算是正式地连接成功了。这时我们就可以通过ftp_pwd()看到我们登录帐号的目录情况,也可以通过ftp_nlist()看到目录中的内容。当前我们还没有上传任何东西,目录里面还是空的。ftp_close()用于关闭一个FTP连接句柄。
操作目录
在上传文件之前,我们先看下如何操作目录,也就是目录的创建、删除之类的操作。
$conn=ftp_connect(&34;);\n\nftp_login($conn,&39;,&39;);\n\nftp_mkdir($conn,&39;);\nftp_mkdir($conn,&39;);\nftp_mkdir($conn,&39;);\n\nftp_rename($conn,&39;,&39;);\n\nftp_rmdir($conn,&39;);\n\nprint_r(ftp_nlist($conn,$pwdInfo));\n//Array\n//(\n//[0]=>/home/testftp/www\n//[1]=>/home/testftp/www11\n//)\n
通过ftp_mkdir()可以创建目录,ftp_rename()用于改名,这个函数不只是针对目录,也可以对文件进行改名操作。ftp_rmdir()就是删除目录的操作。
在这段测试代码中,我们创建了3个目录,然后对其中一个目录改名,并删一个目录。最后通过ftp_nlist()查看当前用户目录下的内容。
上传文件
目录操作之后就是文件相关的操作,这里我们分开来说,先看一下上传文件的操作。
ftp_put($conn,&39;,&39;);\n\nftp_chdir($conn,&39;);\nftp_put($conn,&39;,&39;);\nftp_cdup($conn);\n\nftp_put($conn,&39;,&39;);\n\nftp_rename($conn,&39;,&39;);\n\nprint_r(ftp_rawlist($conn,&39;));\n//Array\n//(\n//[0]=>-rw-r–r–1100310031785Feb2401:091.php\n//[1]=>drwxr-xr-x21003100320Feb2401:09www\n//[2]=>drwxr-xr-x2100310036Feb2400:51www1\n//[3]=>drwxr-xr-x21003100319Feb2400:50www11\n//)\nprint_r(ftp_rawlist($conn,&39;));\n//Array\n//(\n//[0]=>-rw-r–r–11003100310538Feb2401:0922.php\n//)\nprint_r(ftp_rawlist($conn,&39;));\n//Array\n//(\n//[0]=>-rw-r–r–1100310031534Feb2401:093.php\n//)\n
ftp_put()用于文件的上传,我们需要定义上传之后的文件名,如果只是一个文件名的话,那么这个文件就会上传到当前目录下,也就是我们登录之后的/home/testftp这个用户目录。我们可以使用ftp_chdir()进入某个指定的目录之后上传,使用ftp_cdup()返回上级目录。同时,我们也可以直接在文件名加入路径信息,这样就不用进入某个具体的目录,而是直接将文件上传到指定的目录中。
ftp_rawlist()是另一种显示目录内部文件和目录信息的函数,它展示的内容和操作系统中的ls-l命令比较像,也就是显示的内容更加详细丰富一些。同样地,在这里我们也演示了通过ftp_rename()函数来修改文件的名称。
文件相关信息及下载文件
文件上传了之后,我们也可以通过一些函数来查看文件的信息。
echoftp_mdtm($conn,&39;),PHP_EOL;//1614128689\n\nechoftp_size($conn,&39;),PHP_EOL;//10538\n\nechoftp_systype($conn),PHP_EOL;//UNIX\n
这里就是简单的通过这三个函数看一下文件的上传时间、大小信息。ftp_systype()函数查看的是FTP服务器的操作系统信息。
ftp_get($conn,&39;,&39;);\n//./222.php\n\nftp_delete($conn,&39;);\nprint_r(ftp_rawlist($conn,&39;));\n//Array\n//(\n//)\n
下载文件直接使用ftp_get()方法就可以了,同样我们也可以定义下载之后的文件名。其实在大部分情况下,不管是上传还是下载,我们都不用去修改文件名,保持原有的文件名会更加方便我们之后的操作。
ftp_delete()用于删除FTP服务器上的某个文件,这个也不需要过多地解释了。
总结
通过上面这些函数,其实一些基本的FTP操作也就完成了,当然,在文档中还有更多的函数这里没有解释说明,不过也并不是特别重要的函数。有兴趣的同学可以自己去官方查看相关的函数说明。FTP服务虽然现在可能使用的会少一些,但在很多场景下它还是非常方便的,所以大家多少要了解掌握一些。
测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/2021/02/source/6.一起学习PHP中的FTP操作.php
参考文档:
https://www.php.net/manual/zh/book.ftp.php
OK,本文到此结束,希望对大家有所帮助。
