松鼠的博客

导航

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/

欢迎入群一起讨论

 

 

 

posted on 2023-09-19 15:28  Xproer-松鼠  阅读(73)  评论(0编辑  收藏  举报