jQuery+PHP实现对大文件分片后多线程上传

jQuery+PHP实现对大文件分片后多线程上传,返回上传后的URL

PHP端上传代码

session_start();
//文件分片上传
class uploader{
 
    //执行上传(的name属性,保存路径-相对当前路径)
    public function upload($name,$savedir = 'uploads'){
         
        $return_arr = array('0','');
        $userID = $_SESSION['uploader_id']; //用户标识
         
        if(!empty($_POST['act']) && trim($_POST['act'])=='combine'){
            //-------------合并文件
            $chunks = intval($_POST['chunks']);//总分块个数
             
            //文件后缀
            $type = substr($_POST['filename'],strripos($_POST['filename'],'.'));
             
            //保存临时文件
            $tmppath = $savedir.'/tmp'; //临时目录,
            if(!file_exists($tmppath)){ @mkdir($tmppath,0777,true); }
             
            $filenamemd5 = md5($_POST['filename']);
             
            $savedir = $savedir.'/files/'.date('Ym',time());
            if(!file_exists($savedir)){ @mkdir($savedir,0777,true);}
            $newname = date('mdH',time()).rand(10000,99999).'_'.rand(100000,999999).$type;
             
            $writer = fopen("{$savedir}/{$newname}","ab"); //合并后的文件名
            for($i=0;$i<$chunks;$i++){
                $file2read = "{$tmppath}/{$userID}_{$filenamemd5}_{$i}";
                $reader = fopen($file2read,"rb");
                fwrite($writer,fread($reader,filesize($file2read)));
                fclose($reader);
                unset($reader);
                @unlink($file2read);//删除分块临时文件
            }
            fclose($writer);
            $return_arr[0]='1';
            $return_arr[1]="{$savedir}/{$newname}";
             
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值