欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

js教程

Vue文件切片上传,file对象的slice使用方法

js教程 我的站长站 2022-12-28 共58人阅读

1. file对象介绍

size 表示二进制对象的大小

type 表示二进制对象的类型

slice 方法 分割文件

2. file.slice介绍

第一个参数startByte表示文件起始读取Byte字节

第二个参数则是结束读取字节

文件切片上传

// 文件切片大小定为1MB

let idx = 1;
const bytesPerPiece = 1 * 1024 * 1024;
let startBytes = idx * bytesPerPiece;
let endBytes = startBytes + bytesPerPiece;
if (endBytes > file.size) {
endBytes = file.size;
}

2.切割文件

// 切割文件,file对象的slice方法,文件分片的核心方法

const chunk = file.slice(startBytes, endBytes);

3.定义form对象

let params = new FormData();
params.set("chunk", idx);
params.set("chunks", totalPieces);
params.set("size", file.size);
params.set("name", file.name);
params.set("plupload", chunk);

4.请求后台

// post请求 postForm 为自定义的form表单请求方法

postForm('url', params).then((res) => {

// 根据后端返回是否完成

if (true) {
return res;
}
// 递归上传
this._uploadBig(file, ++idx);
})

5.全部代码

/**
* @param {Object} file 文件
* @param {Number} idx 当前分片
* @return {Object}
*/
uploadBig(file, idx) {
// 文件切片大小定为1MB
const bytesPerPiece = 1 * 1024 * 1024;
let startBytes = idx * bytesPerPiece;
let endBytes = startBytes + bytesPerPiece;
if (endBytes > file.size) {
endBytes = file.size;
}
const totalPieces = Math.ceil(file.size / bytesPerPiece)
// 全部上传完毕后退出
if(startBytes >= file.size) { 
return false;
}
// 切割文件,file对象的slice方法,文件分片的核心方法
const chunk = file.slice(startBytes, endBytes);
// 定义form对象
let params = new FormData();
params.set("chunk", idx);
params.set("chunks", totalPieces);
params.set("size", file.size);
params.set("name", file.name);
params.set("plupload", chunk);
// post请求 postForm 为自定义的form表单请求方法
postForm('url', params).then((res) => {
// 根据后端返回是否完成
if (true) {
return res;
}
// 递归上传
this._uploadBig(file, ++idx);
})
}
相关推荐
  • 上传文件
  • 分片上传
  • nginx宝塔面板上传文件环境配置方法

    在使用nginx系统的宝塔面板开发上传或下载文件功能时,需要首先要配置下载nginx或PHP的参数。否则上传下载大文件时,总是报错,上传小一点的文件,就不报错。修改nginx配置打开nginx管理界面,看到“性能调整”,主要修改连接超时、最大上传文件大小,其他的也可...

    宝塔面板 55 1年前
  • DISCUZ升级后不显示“选择文件上传”按钮

    小编自己的discuz论坛由于不是最新版本,每次登陆论坛都会频繁的有升级提示,这次由于小编手贱了一下下,点击了升级flash player 14。最终导致小编的论坛中就再也看不到:选择文件上传“那个按钮了,图片添加到帖子内容中上方没有:选择文件上传”。这个解决方...

    discuz教程 384 7年前
  • 宝塔面板修改PHP文件上传大小
    宝塔面板修改PHP文件上传大小

    宝塔面板修改PHP文件上传大小很简单,直接打开宝塔面板WEB端进入软件商店选择已经安装且正在使用的PHP版本号点击设置->配置文件搜索post_max_size修改后面的值(自己需要多少就改成多少,切勿过大,防止...

    宝塔面板 378 3年前
  • PHP文件上传示例代码

    第一步,建立上传文件的表单。<html><body><form action="upload_file.php" method="post"enctype="multipart/form-data"><label for="file">Filename:</label><input type="file" name="file&qu...

    php教程 36 3年前
  • PHP新手必学文件上传下载实例

    都知道PHP无非就是增删改查,学会了增删改查就入门了PHP,我的站长站分享一篇PHP新手必学文件上传下载实例,快来学习吧。主页index.php<html><head><title>图片操作</title><style>#contains {width: 500px;margin: 0 auto;text-align: center;color: #0F...

    php教程 45 3年前
  • 大文件分片上传 / 下载限速解决方案

    分片上传将需要上传的文件按照一定的分割规则,分割成相同大小的数据块;初始化一个分片上传任务,返回本次分片上传唯一标识;按照一定的策略(串行或并行)发送各个分片数据块;发送完成后,服务端根据判断数据上传是否完整,如果完整,则进行数据块合成得到原始文件。...

    php教程 39 1年前
  • HTML5实现大文件分片上传

    上传大文件一直是个比较头疼的问题,一是上传时间长,中途一旦出错会导致前功尽弃;二是服务端配置复杂,要考虑接收超大表单和超时问题,如果是托管主机没准还改不了配置,默认只能接收小于4MB的附件。比较理想的方案是能够把大文件分片,一片一片的传到服务端,再...

    js教程 20 1年前
  • php+ajax大文件分片上传示例代码

    代码思路PHP在上传超大的文件时,不能只让后端PHP上传,会容易上传到一半内测益处失效。需要前端要和后端相互配合一起来处理,文件上传要使用ajax的方法,而不是form的submit的方式。前端把file文件对象按一定的大小分割成一定大小的文件(如按2M或5M来分割),对...

    php教程 43 1年前
  • Vue文件切片上传,file对象的slice使用方法

    1. file对象介绍size 表示二进制对象的大小type 表示二进制对象的类型slice 方法 分割文件2. file.slice介绍第一个参数startByte表示文件起始读取Byte字节第二个参数则是结束读取字节文件切片上传// 文件切片大小定为1MBlet idx = 1;const bytesPer...

    js教程 58 1年前
  • PHP大文件分片上传并带进度条功能示例

    html文件:<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>大文件切割上传带进度条</title> <link rel="stylesheet" href...

    php教程 48 1年前