1 , 在实际的项目开发中,基本都会有头像上传这个功能,实现php的上传功能,就需要使用到move_uploaded_file这个函数
bool move_uploaded_file ( string $filename , string $destination )
filename: 上传文件的文件名, 一般这里都写 $_FILES["file"]["tmp_name"]
destination:文件写入的路径: 例如 upload/xxx.png
返回值就是上传是否成功
2,Apache 根目录 DocumentRoot 下创建名为 ‘upload’ 的文件夹,并且在该文件夹下创建 upload.html(浏览器访问,选择要上传的文件)、upload_file.php(保存浏览器上传的文件到服务器)
相关命令介绍
mkdir : 创建文件夹
touch : 创建文件
localhost:~ wany$ cd /Library/WebServer/Documents/
localhost:Documents wany $ mkdir upload
mkdir: uploadd: Permission denied
localhost:Documents wany $ sudo mkdir upload
Password:
localhost:Documents wany $ cd upload/
localhost:upload wany $ touch upload.html
touch: upload.html: Permission denied
localhost:upload wany $ sudo touch upload.html
localhost:upload wany $ sudo touch upload_file.php
localhost:upload wany $
3,编辑upload.html, 可以使用文本编辑或vim终端,内容如下
enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。 <-->
4, 编辑upload_file.php, 可以使用文本编辑或vim终端,内容如下
5, 启动Apache 服务,如果已经启动跳过本步骤
localhost:upload xwmedia01$ cd ~
localhost:~ wany$ sudo apachectl restart
6,浏览器访问: http://localhost/upload.html, 选择文件上传,点submit后,浏览器可能会出现以下错误信息
Warning: : failed to open stream: Permission denied in /Library/WebServer/Documents/upload/upload.php on line 3
Warning: move_uploaded_file(): in /Library/WebServer/Documents/upload/upload.php on line 3
出现该错误是因为文件要写入的文件路径中,某一个文件夹没有写入权限,需要给没有权限的文件夹开启写入权限,我这里Documents 已经有权限了,新建的upload文件夹没有权限
localhost:~ wany$ cd /Library/WebServer/Documents/
localhost:Documents wany$ chmod 777 upload
现在upload已经打开了写入权限了,尝试重新访问: http://localhost/upload/upload.html,重复上传步骤,浏览器显示:上传成功,可以到 /Library/WebServer/Documents/upload/ 下 去查看上传的文件
localhost:~ wany$ cd /Library/WebServer/Documents/upload
localhost:upload wany$ ls
localhost:upload wany$ ls
upload.html
upload.php
uploadxxx.png
至此基本的文件上传实现了,实际项目中还要根据需求增加各种判断,例如限制文件类型,限制文件大小等。
可以前往 w3cschool 了解更多关于文件上传,以及其他php相关知识