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()函数

  • 作用: 停止程序并且输出()的的字符串内容
  • @parma: string要输出的内容,可以省略
  • 返回值:没有,作用是停止函数

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');
    ?>
    

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/php/272415.html

(0)
上一篇 2022年7月9日 05:57
下一篇 2022年7月9日 06:01

相关推荐

发表回复

登录后才能评论