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终端,内容如下
<html>
<body>
<!--> enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。 <-->
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<!-->type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。<-->
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
4, 编辑upload_file.php, 可以使用文本编辑或vim终端,内容如下
<?php
header("Content-Type:text/json;charset=utf-8");
if (move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) {
echo "上传成功";
}
?>
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相关知识