这篇文章主要为大家详细介绍了php分片上传简单示例,具有一定的参考价值,可以用来参考一下。

对php分片上传简单示例感兴趣的小伙伴,下面一起跟随512笔记的小编巴闭妹来看看吧!

/**

*

* @param

* @arrange (512.笔记) www.512pic.com

**/

class Upload{

private $filepath = './upload'; //上传目录

private $tmpPath; //PHP文件临时目录

private $blobNum; //第几个文件块

private $totalBlobNum; //文件块总数

private $fileName; //文件名

private $md5FileName;

public function __construct($tmpPath,$blobNum,$totalBlobNum,$fileName, $md5FileName){

$this->tmpPath = $tmpPath;

$this->blobNum = $blobNum;

$this->totalBlobNum = $totalBlobNum;

$this->fileName = $this->createName($fileName, $md5FileName);

$this->moveFile();

$this->fileMerge();

}

//判断是否是最后一块,如果是则进行文件合成并且删除文件块

private function fileMerge(){

if($this->blobNum == $this->totalBlobNum){

$blob = '';

for($i=1; $i<= $this->totalBlobNum; $i++){

$blob .= file_get_contents($this->filepath.'/'. $this->fileName.'__'.$i);

}

file_put_contents($this->filepath.'/'. $this->fileName,$blob);

$this->deleteFileBlob();

}

}

//删除文件块

private function deleteFileBlob(){

for($i=1; $i<= $this->totalBlobNum; $i++){

@unlink($this->filepath.'/'. $this->fileName.'__'.$i);

}

}

private function moveFile(){

$this->touchDir();

$filename = $this->filepath.'/'. $this->fileName.'__'.$this->blobNum;

move_uploaded_file($this->tmpPath,$filename);

}

//API返回数据

public function apiReturn(){

if($this->blobNum == $this->totalBlobNum){

if(file_exists($this->filepath.'/'. $this->fileName)){

$data['code'] = 2;

$data['msg'] = 'success';

$data['file_path'] = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['DOCUMENT_URI']).str_replace('.','',$this->filepath).'/'. $this->fileName;

}

}else{

if(file_exists($this->filepath.'/'. $this->fileName.'__'.$this->blobNum)){

$data['code'] = 1;

$data['msg'] = 'waiting';

$data['file_path'] = '';

}

}

header('Content-type: application/json');

echo json_encode($data);

}

private function touchDir(){

if(!file_exists($this->filepath)){

return mkdir($this->filepath);

}

}

private function createName($fileName, $md5FileName){

return $md5FileName . '.' . pathinfo($fileName)['extension'];

}

}

$upload = new Upload($_FILES['file']['tmp_name'],$_POST['blob_num'],$_POST['total_blob_num'],$_POST['file_name'],$_POST['md5_file_name']);

$upload->apiReturn();

注:关于php分片上传简单示例的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。

关键词:

您可能感兴趣的文章

关于分片上传 php,php分片上传简单示例相关推荐

  1. 简单php web ftp服务器,php 上传文件到ftp服务器的简单示例(单文件)

    搜索热词 PHP上传单个文件到ftp服务器的演示范例,感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. 经测试代码如下: /** * 上传文件到ftp服务器 * * @param ...

  2. 大文件分片上传,断点续传,秒传 实现

    前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...

  3. html上传文件_.NET基于WebUploader大文件分片上传、断网续传、秒传

    (给DotNet加星标,提升.Net技能) 转自:学习中的苦与乐 cnblogs.com/xiongze520/p/10412693.html 现在的项目开发基本上都用到了上传文件功能,或图片,或文档 ...

  4. java 大文件上传_JAVA大文件上传分片上传方法(附带demo)

    最近在做视频上传展示的相关业务!但是因为最开始使用的是单文件上传所以一旦遇到大文件上传的速度就非常慢!为此在网上一直找寻分片的方法!得到了思路! 直接讲一下我这边看了那么多文档加上自己理解写的demo ...

  5. SpringBoot+Vue.js实现大文件分片上传、断点续传与极速秒传

    亲测好用,这里就直接上代码了,代码有详细的解释. 0. 建表语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ------------------ ...

  6. html 前端优化上传视频,前端上传组件Plupload使用---上传大视频(分片上传)

    上传视频到服务器 1.引入js插件: 2.html页面如图: 上传视频: 上传视频 支持AVI.wma.rmvb.rm.flash.mp4.mid.3GP等格式 3.js代码 $(function ( ...

  7. vue实现大文件分片上传断点续传并展示上传进度条

    最近有一个上传视频到服务器的功能,然后发现视频太大了,比如1个G的视频文件基本都是上传失败的,我之前都是上传阿里云的,所以面对大文件上传服务器就做了分片上传和断点续传. 首先解释什么是分片上传:比如一 ...

  8. SpringBoot 分片上传、断点续传、秒传、直传Minio

    最近在学习,在SpringBoot上进行分片上传.断点续传.直接上传到Minio服务器上,中间也遇到的不少坑.自定义minio继承MinioClient来实现分片上传.比较适合初学者. 一.大致的流程 ...

  9. springboot+阿里云OSS分片上传、断点续传、秒传

    最近工作中有使用到OSS的分片上传API,整体流程就是前端将大文件进行分割,每个分片大小是1MB,分片个数是:(文件总大小 / 单个分片大小),前端多线程处理上传分片到后端,后端接收到分片后调用OSS ...

  10. vue获取上传进度_vue,webuploader实现文件分片上传,并显示上传进度

    1.效果图 2.上传文件时,如果使用普通上传,则需要上传一个文件完成后才能上传下一个文件,如果文件很大时,可能会造成浏览器无响应,如果采用分片上传方式,将一个大文件分割成多块,并发上传,极大地提高大文 ...

最新文章

  1. Android_TextSwitcher和ImageSwitcher
  2. Python基础-面向对象编程
  3. 【Leetcode | easy】回文数
  4. 2020 操作系统第五天复习(知识点总结)
  5. PHP数据类型的转化:(类型) 变量 类型val(变量) settype(变量,类型)
  6. inittab文件格式
  7. esp32查询剩余内存_SQL 查询语句先执行 SELECT?兄弟你认真的么?
  8. 【并发技术16】线程同步工具Exchanger的使用
  9. 手把手gitlab最详细版安装教程centos7下安装(最新版),修复gitlab
  10. xargs 将标准输入转换成命令行参数
  11. matlab简单分析信号调制解调
  12. ftp服务器app配置文件,Ubuntu FTP服务器配置与应用
  13. Java se 基础
  14. vs 错误error C2011:类型重定义的解决办法
  15. R语言-两总体均值对比
  16. java画胖虎_漫画家马千里闲在家里画的“胖虎下山图”火了,关键部位令人瞩目...
  17. 【坑2】maven通过nexus私服服务器下载jar包提示无权限Authentication failed for http://localhost:8081/repository/maven-pub
  18. 吉林大学计算机科学杨凤杰,吉林大学计算机科学与技术学院 [2005-04] 总第36期...
  19. k8s探针检测php,k8s实践11:kubernetes监测探针简单测试
  20. PG332 ERNIC Datasheet Translation

热门文章

  1. 鸿蒙哪些机型可以用,鸿蒙系统可以在哪些手机上使用 鸿蒙系统可使用机型介绍...
  2. 22年电赛冬令营授课
  3. 【读书笔记】iOS-UIFont-如何知道字体的PostScript名称
  4. java reflections_java 反射工具包reflections
  5. 实训报告万能模板计算机专业,有关大学生计算机专业实习报告模板
  6. SDOI2011_染色
  7. 软件工程——个人总结
  8. Xmodem Ymodem Zmodem
  9. CreateThread、_beginthreadex和AfxBeginThread 的区别
  10. 安卓使用emoji表情