PHPackages                             huizhang/file-segment-upload - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. huizhang/file-segment-upload

ActiveLibrary[File &amp; Storage](/categories/file-storage)

huizhang/file-segment-upload
============================

大文件分段上传

v1.0.1(6y ago)11281PHP

Since Aug 12Pushed 6y agoCompare

[ Source](https://github.com/tuzisir-php/FileSegmentUpload)[ Packagist](https://packagist.org/packages/huizhang/file-segment-upload)[ RSS](/packages/huizhang-file-segment-upload/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependenciesVersions (3)Used By (0)

文件分段上传
======

[](#文件分段上传)

### 1.安装

[](#1安装)

```
composer require huizhang/file-segment-upload

```

### 2.代码示例

[](#2代码示例)

`html`

```

  var uploadObj = new SegmentUpload();
  var fileDom = document.getElementById("file");

  fileDom.onchange = function(){
    uploadObj.addFileAndSend(this);
  };

  function SegmentUpload() {
    const length = 1024*10; // 文件包大小
    const requestUrl = './Exampl1.php';
    const requestType = 'POST'; // 请求方式

    var request = new XMLHttpRequest();
    var start = 0; // 截取下标开始位置
    var end = length; // 截取下标结束位置
    var nowPackage=''; // 文件包
    var nowPackageNum = 1; // 当前包数
    var totalPackageNum = 0; // 总共包数
    var file = null;

    this.addFileAndSend = function(that){
      file = that.files[0];
      totalPackageNum = Math.ceil(file.size / length);
      blob = cutFile();
      sendFile(blob);
      nowPackageNum += 1;
    };

    cutFile = function (){
      nowPackage = file.slice(start, end);
      start = end;
      end = start + length;
    };

    sendFile = function (){
      var formData = new FormData();
      formData.append('file',nowPackage);
      formData.append('blob_num',nowPackageNum);
      formData.append('total_blob_num',totalPackageNum);
      formData.append('file_name',file.name);
      request.open(requestType, requestUrl, false);
      request.onreadystatechange = function () {
        var t = setTimeout(function(){
          if(start
