微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

13.文件的上传与下载

文件上传与下载

1.文件上传

  • 将本地文件复制一份传送到网络的服务器中储存。
  • 上传流程:

    页面上传流程

2.文件上传时需要注意的事项

  • HTML 表单(form)部分
    1. 传输方式一定要用POST方法(POST方法传输数据更大)
    2. 需要指定表单传输编码格式enctype='multipart/form-date'

      image-20220419213442835

    3. input的类型为file<input type="file" name="" id="">
  • PHP页面需要注意的
    • 如果有文件上传,那么上传文件PHP脚本中不能用$_POST接收,必须用$_FILES来接收,其他内容依然用$__POST
    • PHP.ini文件有关上传的设置

      image-20220419215316464

    • 注意:upload_max_filesize设置的值不可以超过post_max_size设置的值
    • 接收结果:

      image-20220419223050314

3.实现文件上传

  1. 判断错误号,如果是0 上传成功之后才能执行以下代码

    image-20220420213459646

  2. 判断上传文件大小是否是允许的类型
  3. 判断上传文件的大小是否在允许的范围内
  4. 制作制定保存文件的目录
  5. 移动文件

die()函数

in_array()函数

image-20220420215100283

move_uploaded_file — 将上传文件移动到新位置

image-20220420221301395

<?PHP
// 判断错误号
// test 为上传时input所定义的名字
if($_FILES['test']['error'] == 0) {
// 判断上传文件的类型是否是允许的
$type = array('image/jpeg', 'image/png', 'image/gif');
if(in_array($_FILES['test']['type'], $type)) {
    // 判断文件大小是否可以
    echo "可用文件类型\n";
    if($_FILES['test']['size'] <= 100000) {
            // 制作制定保存目录
            echo "可用文件大小\n";
        $path = './uopload';
        if(!file_exists($path)) {
            mkdir($path);
            echo "创建文件成功\n";
        } else {
            echo "文件夹存在\n";
        }
        // 移动文件
        // move_uploaded_file这个函数要注意
        // 参数一 要为tmp_name,为他临时储存的位置(包括了她的名字)
        // 参数二 要移动到的文件位置,这个位置要包括名字
        if(move_uploaded_file($_FILES['test']['tmp_name'], $path . './' . $_FILES['test']['name'])) {
            echo '文件上传成功';
        }
    }
}
}
?>

封装成函数:

<?PHP
// @parma1 上传表单的名称
// @parma2 上传文件的类型(数组形式)
// @parma3 保存上传文件的目录
function upload($pic, $info, $path) {
    $file = $_FILES[$pic];
    $info = array();
    if($file['error'] == 0) {
        if(in_array($file['type'], $info)) {
            if(!file_exists($path)) {
                mkdir($path);
            }
            if(move_uploaded_file($file['tmp_name'], $path.'/'.$file['name'])) {
                echo '上传成功';
            }
        }
    }
}
?>

4.文件下载

  • header函数

  • 作用: 发送一个原生的HTTP头,在当前PHP页面使用<header>标签里的内容

  • 功能:

    • 跳转(暂时记住这个):

      header('location:https://www.bilibili.com'); // 要给完整路径不然会认为是本地路径
      
// 实现下载

// 声明要下载文件的类型
header('Content-type: application/pdf');

// 对下载的文件进行描述并且指定下载文件名称
header('Content-disposition: attachment; filename="downloaded.pdf"');

// 读取下载文件
readfile('original.pdf');

例如

要下载一张图片

  • 前端

        <a href="download.PHP">本地下载</a>
    
  • 后端

    <?PHP
    // 声明要下载文件的类型
    // 类型为图片
    header('Content-type: image/jpeg');
    
    // 对下载的文件进行描述并且指定下载文件名称
    // 下载图片的名字(全名包括后缀)
    header('Content-disposition: attachment; filename="Eva.jpg"');
    
    // 读取下载文件
    // 要/可供下载文件的位置(本地或网络)
    readfile('./概念图.jpg');
    ?>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐