7/24/2017 9:12:17 PM
PHP文件上传
前端使用form表单提交,html代码如下
<h2>文件提交</h2>
<form action="api/form_file.php" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<!-- hidden -->
<input type="hidden" name="MAX_FILE_SIZE" value="5000000">
<!-- file -->
<label>file:<input type="file" name="file_name" value="file_value"></label>
<!-- reset -->
<input type="reset">
<!-- submit -->
<input type="submit">
</form>
需要注意其中的input hidden是对用户隐藏的,作用是传输文件最大值,方便在前端或者PHP服务器滤掉过大的文件。
再对form的几个属性说明一下:
action—— 表单提交地址
method—— 数据传输方式
accept-charset—— 编码格式
enctype—— 规定内容格式,此处的”multipart/form-data”为二进制。
后端先使用$_FILES接收文件,接收完毕再进行下一步处理。$_FILES就是PHP针对文件上传而设定的规定的全局变量。$_FILES以二维数组格式存储,一维储存input name,二维储存5个键值对,简介如下:
name—— 文件名称
type—— 文件类型
tmp_name—— 文件在服务器中的临时保存路径及名称,请求结束后会被删除
error—— 错位代号
size—— 文件大小
后台接收代码如下;
print_r($_POST);
echo "<br>";
print_r($_FILES);
echo "<br>";
echo "name : " . $_FILES["file_name"]["name"] . "<br>";
echo "type : " . $_FILES["file_name"]["type"] . "<br>";
echo "tmp_name : " . $_FILES["file_name"]["tmp_name"] . "<br>";
echo "error : " . $_FILES["file_name"]["error"] . "<br>";
echo "size : " . $_FILES["file_name"]["size"] . "<br>";
新建一个txt文件“newfile.txt”做试验。结果如下:
this is form_file.php
Array ( [MAX_FILE_SIZE] => 5000000 )
Array ( [file_name] => Array ( [name] => newfile.txt [type] => text/plain [tmp_name] => /tmp/phpqVT1nu [error] => 0 [size] => 36 ) )
name : newfile.txt
type : text/plain
tmp_name : /tmp/phpqVT1nu
error : 0
size : 36
试验结束,到这一步文件已经从客户端传至web服务器中,但只能做短时间保存,接下来要做的就是对web服务器中的文件进行处理,涉及到PHP文件的读写等操作。