PHP实现大文件上传,断点续传

Tus 是一个基于 HTTP 的 文件断点续传开放协议。断点续传的意思是不管是用户自行中断,还是由于网络等原因的意外中断,都可以从中断的地方继续上传,而不用重新开始。
加载依赖。

composer require ankitpokhrel/tus-php

直接贴代码

<?php
namespace app\index\controller;

class Index
{
    public function index()
    {
        return view();
    }

    public function server()
    {
        // server.php
        $server   = new \TusPhp\Tus\Server('redis');

        $response = $server->serve();
        $response->send();
        exit(0); // 退出当前 PHP 进程
    }

    public function upload()
    {
        $fileObj = request()->file('tus_file');
        $fileArr = $fileObj->getInfo();
        $uploadKey = $fileObj->md5();;
        $chunkSize = 10000000;

        $client = new \TusPhp\Tus\Client('http://mytp5.com/index/index/server');
        $client->setKey($uploadKey)->file($_FILES['tus_file']['tmp_name'], $fileArr['name']);
        $bytesUploaded = $client->setKey($uploadKey)->upload($chunkSize);

        echo $bytesUploaded;
    }
}

index.html

<form action="index/index/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="tus_file" id="tus-file" />
    <input type="submit" value="Upload" />
</form>

大文件配置php.ini

upload_max_filesize = 1024M  
post_max_size = 1024M

nginx虚拟主机

server {
        listen        80;
        server_name  mytp5.com;
        root   "E:/www/tp5/public";
 
        client_max_body_size 1024m;
 
        location / {
            index index.php index.html error/index.html;
            error_page 400 /error/400.html;
            error_page 403 /error/403.html;
            error_page 404 /error/404.html;
            error_page 500 /error/500.html;
            error_page 501 /error/501.html;
            error_page 502 /error/502.html;
            error_page 503 /error/503.html;
            error_page 504 /error/504.html;
            error_page 505 /error/505.html;
            error_page 506 /error/506.html;
            error_page 507 /error/507.html;
            error_page 509 /error/509.html;
            error_page 510 /error/510.html;
            include E:/www/tp5/public/nginx.htaccess;
            if (!-e $request_filename){
                rewrite ^(.*)$ /index.php?s=$1 last;
                break;
            }
            autoindex  off;
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
        location /files {
            try_files $uri $uri/ /index/index/server?$query_string;
        }
}

参考文章:http://blog.ncmem.com/wordpress/2023/09/19/php%e5%ae%9e%e7%8e%b0%e5%a4%a7%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e6%96%ad%e7%82%b9%e7%bb%ad%e4%bc%a0/
欢迎入群一起讨论

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值