服务端php之文件上传
程序员文章站
2022-04-14 18:27:48
知识点 echo $_SERVER['PHP_SELF']; 自动获取当前文件的路劲(即提交地址为当前页面) 当一个表单有文件域(即文件上传)的时候,method(提交方式)要设置post,这样更加安全,enctype这个属性为编码类型,固定格式为 multipart/form-data 当文件上传 ......
知识点
- echo $_server['php_self']; 自动获取当前文件的路劲(即提交地址为当前页面)
- 当一个表单有文件域(即文件上传)的时候,method(提交方式)要设置post,这样更加安全,enctype这个属性为编码类型,固定格式为 multipart/form-data
- 当文件上传成功后,系统会在服务端开辟一个临时目录来存放上传的文件,而上传之后,会立马消除这个目录
- upload_err_ok(这是一个记号,其值为0时)
- php 中设置全局变量的两种方式:
- (1) global $message;
- (2) $globals['message']
$avator['error']分析
- 其值为0(upload_err_ok)时:表示文件上传成功
- 其值为1(upload_err_int_size):表示文件超过了 php.ini 文档中的 upload_max_filesize (服务端支持的单个文件上传的大小)的值。当出现这个情况时,只要根据情况增大这个值即可
- 其值为2(upload_err_form_size):表示上传的文件超过了html表单中max_file_size选项指定的值
- 其值为3(upload_err_partial):表示只有部分被上传
- 其值为4(upload_err_no_file):表示没有文件被上传
错误分析
- warning: post content-length of 17545049 bytes exceeds the limit of 8388608 bytes in unknown on line 0
- 当出现上面这句警告的时候,表示超过了服务端所支持的最大的请求体的体积,只需再 php.ini 文档中增大 post_max_size 的大小即可
测试代码
html
<form action="<?php echo $_server['php_self']; ?>" method="post" enctype="multipart/form-data"> <input type="file" name="avator"> <button type="submit">上传</button> <!-- 当 $message 有值的时候显示 --> <?php if (isset($message)): ?> <p style="color: red;"><?php echo $message; ?></p> <?php endif ?> </form>
php
<?php function upload () { if (empty($_files['avator'])) { // $message 要设置为全局变量 $globals['message'] = '亲,您传的是什么啊!'; return; } $avator = $_files['avator']; // $avator => array(5) { // ["name"]=> // string(9) "pic02.jpg" // ["type"]=> // string(10) "image/jpeg" // ["tmp_name"]=> // string(26) "c:\windows\temp\phpbbb.tmp" //临时目录 // ["error"]=> // int(0) // ["size"]=> // int(560586) // } echo $avator['error']; // // 上传失败时,$avator['error'] = 4 // echo $avator['error']; // upload_err_ok === 0 if ($avator['error'] !== upload_err_ok) { // 服务端没有接收到上传的文件 $globals['message'] = '上传失败'; return; } // 接收到了文件 // 将文件从临时目录移动到网站根目录 $source_file = $avator["tmp_name"]; //源文件 // 移动的目录路劲中文件夹必须先存在,否则报错 $target_file = 'uploadfile/' . $avator["name"];//目标放在哪里 $moved = move_uploaded_file($source_file, $target_file); if (!$moved) { $globals['message'] = '上传失败'; return; } // 移动成功(上传成功) echo '亲,上传成功了哟!'; } if ($_server['request_method'] === 'post') { upload(); } ?>
上一篇: PHP学习之PHP的语法糖
下一篇: Java开发笔记(三十五)字符串格式化