JS分片上传大文件并显示进度条实例

上篇文章说明了如何用js在客户端上传文件,功能是实现了,但当上传大文件时,一是时间长,像卡死了一样,二是用户不知道进度很容易在没上传完之前就关掉。今天我们就来看如何在客户端将大文件分片上传,并显示进度。

这个按钮就是点击执行js代码的按钮,<input type=\”button\” value=\”up\” onclick=\”up()\” />

js函数up()的代码如下:

1文件夹中的内容

在js中新加几个变量

pieceover = 0; //已经合并的文件总数

hbindex = 0; //当前正在合并的索引号

totalPieces = 0; //总共要合并的文件总数

将up函数中结束的部分换成如下代码,再用go()函数开始合并

需要说明的是:

//每个切片文件的大小 1024 * 1024 就是1M,下面我这里就是2M

var bytesPerPiece = 1024 * 1024 * 2;

这个分片文件不是越大越好,越大上传越慢,但也不是越小越好,我感觉分片文件的个数在不同硬盘上是有限制的,反正这个数最好是根据自己的情况多测试几遍。

使用JS请求上传图片并实现加载进度条

在前端开发中,图片上传是一个常见的功能需求。而对于大文件的上传,为了更好地体验,我们通常需要实现一个上传进度条,来让用户了解上传进度。在实现这个功能时,我们可以使用JavaScript来实现。

如何上传图片

我们可以使用HTML的<input type=\”file\”>标签来创建一个文件选择框,让用户选择需要上传的文件。然后,我们可以使用JavaScript来处理选择的文件并将其上传到服务器。

html代码

<input type=\”file\” id=\”file-input\”>

javascript代码

const fileInput = document.getElementById(\’file-input\’);

fileInput.addEventListener(\’change\’, function() {

const file = fileInput.files[0];

// 处理文件上传

});

我们可以使用XMLHttpRequest对象来实现文件上传。通过设置xhr.upload.onprogress事件,我们可以实现上传进度条的显示。

javascript代码

const xhr = new XMLHttpRequest();

xhr.open(\’POST\’, \’/upload\’, true);

xhr.upload.onprogress = function(e) {

if (e.lengthComputable) {

const progress = (e.loaded / e.total) * 100;

// 更新进度条

}

};

xhr.send(file);

如何实现进度条

有许多方法可以实现进度条,包括使用CSS,使用canvas等等。这里我们以一种简单的方式来实现进度条:使用HTML的<progress>标签。

html

<progress id=\”upload-progress\” value=\”0\” max=\”100\”></progress>

javascript代码

const progress = document.getElementById(\’upload-progress\’);

xhr.upload.onprogress = function(e) {

if (e.lengthComputable) {

const percent = (e.loaded / e.total) * 100;

progress.value = percent;

}

};

在这段代码中,我们使用了HTML的<progress>标签,并通过设置value属性来更新进度条的进度。

总结

通过上述代码,我们可以实现一个简单的上传图片并显示进度条的功能。当然,这只是一个简单的示例,实际上在实际应用中,我们还需要考虑一些细节问题,比如上传的安全性、兼容性、上传失败处理等等。但是通过这个示例,我们可以了解到JavaScript如何实现文件上传和进度条的显示,以及一些常见的解决方案。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。