文件上传知多少,PHP面试学到老,虽然够用也挺好,知识体系也重要_php关于上传的面试题

最后

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性

Java面试宝典2021版

最常见Java面试题解析(2021最新版)

2021企业Java面试题精选

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

1. PHP如何获取上传的文件?

使用超全局变量$_FILES获取,如下所示

Array
(
    [name] => Array
        (
            [0] => facepalm.jpg
            [1] =>
        )

    [type] => Array
        (
            [0] => image/jpeg
            [1] =>
        )

    [tmp_name] => Array
        (
            [0] => /tmp/phpn3FmFr
            [1] =>
        )

    [error] => Array
        (
            [0] => 0
            [1] => 4
        )

    [size] => Array
        (
            [0] => 15476
            [1] => 0
        )
)


字段的含义

  • $_FILES['userfile']['name'] 客户端机器文件的原名称
  • $_FILES['userfile']['type'] 文件的 MIME 类型
  • $_FILES['userfile']['size'] 已上传文件的大小,单位为字节
  • $_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名
  • $_FILES['userfile']['error'] 和该文件上传相关的错误代码

2. 哪些配置影响文件上传的大小数量?

  1. php.ini 中的 upload_max_filesize。
  2. php.ini 中的 post_max_size
  3. php.ini 中的 max_file_uploads
  4. 网页表单中的input的属性 MAX_FILE_SIZE

3. PHP除了POST还可以怎么接收上传文件?

PUT方法上传的文件,$putdata = fopen("php://input", "r");

4.PHP上传文件的关键方法?

move_uploaded_file(string $filename, string $destination): bool

将上传的文件移动到新位置

在这里插入图片描述

文件上传处理完整解析

上面的列举的文件上传相关的面试题都只是冰山一角。如果我们要学习一个知识点,那么仅仅依靠零星的面试题是不行的,系统化的学习才是重点。

文件上传的流程

文件上传的基本流程为

  1. 表单接收文件
  2. 上传到服务器临时文件夹
  3. 服务端把文件从临时文件夹转移到持久化的文件夹

php.ini文件上传的配置

file_uploads “1” PHP_INI_SYSTEM
upload_tmp_dir NULL PHP_INI_SYSTEM
max_input_nesting_level 64 PHP_INI_PERDIR
max_input_vars 1000 PHP_INI_PERDIR
upload_max_filesize “2M” PHP_INI_PERDIR
max_file_uploads 20 PHP_INI_SYSTEM

完整的文件上传最佳实践

表单校验文件大小和限制文件类型

<form enctype="multipart/form-data" action="\_\_URL\_\_" method="POST">
    <input type="hidden" name="MAX\_FILE\_SIZE" value="30000" />
    <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

php获取文件并处理报错信息

header('Content-Type: text/plain; charset=utf-8');

try {
   
    if (
        !isset($\_FILES['upfile']['error']) ||
        is\_array($\_FILES['upfile']['error'])
    ) {
        throw new RuntimeException('Invalid parameters.');
    }

    switch ($\_FILES['upfile']['error']) {
        case UPLOAD\_ERR\_OK:
            break;
        case UPLOAD\_ERR\_NO\_FILE:
            throw new RuntimeException('No file sent.');
        case UPLOAD\_ERR\_INI\_SIZE:
        case UPLOAD\_ERR\_FORM\_SIZE:
            throw new RuntimeException('Exceeded filesize limit.');
        default:
            throw new RuntimeException('Unknown errors.');
    }

    if ($\_FILES['upfile']['size'] > 1000000) {
        throw new RuntimeException('Exceeded filesize limit.');
    }

    $finfo = new finfo(FILEINFO\_MIME\_TYPE);
    if (false === $ext = array\_search(
        $finfo->file($\_FILES['upfile']['tmp\_name']),


# 总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

**目录:**

![](https://img-blog.csdnimg.cn/img_convert/3a7aa5f508b655cce0572bfc19162da2.webp?x-oss-process=image/format,png)

**部分内容截图:**

![](https://img-blog.csdnimg.cn/img_convert/2ffb4f4c8e5f1b92a371b9dd44d0c27f.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/6a70a12b8494c55ae91d853403dde446.webp?x-oss-process=image/format,png)



> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

ODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值