WEB之文件传输

本文介绍了一个简单的文件分片上传实例,使用JavaScript的FileReader API进行文件读取,并将其转换为Base64编码,通过AJAX分多次上传至服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js之文件对象

FileReader
简单的一个文件分片上传实例

function upFile () {
	获取文件对象
	let file =  files[0]
	新建表单对象
	let upData = new FormData()
	读取存储在用户计算机上的文件,构造函数实例
	let File = new FileReader()
	这里依据base64位编码发给后端,所以我需要将文件转换成64位编码
	let base64 = null
	每次上传的文件大小`slice_size`
	let sliceSFile = file .slice((count - 1) * slice_size, count * slice_size))
	转换文件为base64编码
	File.readAsDataURL(sliceSFile )
	然后监听file函数加载事件,是否转换完成
	File.addEventListener('load', () => {
		base64 = File.result
		// 因为不需要文件标识,所以这里我为了只获得文件编码,把标识截掉了
		base64 = base64.slice(base64.indexOf(',') + 1)
		// 数据添加到表单对象
		upData.append('base64', base64)
		// 添加token,重复上步骤
		`(count - 1) * slice_size`为每次发送的base64编码,count为当前为止发送了多少次
		开始上传数据
		 $.ajax({
	        url: gdocUpload, //用于文件上传的服务器端请求地址
	         type:"post",
	         async: false,
	         data: upData,
	         contentType:false, //禁止ajax 自动添加请求头
	         processData:false, // 禁止ajax 自动转换数据格式
	         success: function (res) {
	             if (res.status === true) {
	             	`slice` 为总分片数
	                 if(count === slice) {
	                     console.log(res, '33333');
	                     count = 1;
	                     // 文件已经全部上传,执行后续操作
	                    ..........
	                 } else {
	                 	文件还未完全上传,循环执行上传操作
	                     count++
	                     upFile(id)
	                 }
	             }
	         }
	     })
	})
}

这里主要是文件转换和分片上传的代码,仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值