PHP实现大文件上传,断点续传
  9m65el8SCpbP 2023年11月19日 26 0

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实现大文件上传断点续传/


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  NHaurzrhyr04   2023年12月23日   106   0   0 htmljQueryhtmljQuery
9m65el8SCpbP