原生JS处理多文件上传到腾讯云(对象存储)

写在前面

其实在这篇文章之前呢已经写过一篇关于文件上传的文章了,名字是文件上传腾讯云,如果看这篇文章的话,希望还是先看看我之气那写的那篇文章,不然下面的可能直接看的话会有一些迷惑。

废话不说,既然是上传,就免不了单文件或者多文件上传的问题,那么其实目前很多的框架都是有上传功能的,只要是将接口写好,直接用就行了,就是包括腾讯云也是提供一个接口我们直接使用就可以的,下面我们就使用腾讯的接口完成多文件上传的处理。

效果:

结果:

PS:状态是200的时候说明你是上传成功了! 

文件上传有几个问题需要处理:

第一:拿到文件的名字

第二:拿到文件本身

第三:多文件的时候,需要将文件存储到数组里面,上传的时候遍历出来

这三个问题我们一个一个解决

拿到文件名字其实很简单:

 selectedFile = document.getElementById('fileSelector').files[0];
 filename = selectedFile.name;

拿到文件本身也很简单:

  selectedFile = document.getElementById('fileSelector').files[0];

最后是将每一次用户选择以后的文件存储到数组里面,这个其实也不难:

var arrfilename = new Array();
var arrfile = new Array();
arrfilename.push(filename); 
arrfile.push(selectedFile);

最后这些都处理好了,我们就可以进行上传的操作了

看源码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/cos-js-sdk-v5.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/jquery-1.11.2.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<input id="fileSelector" type="file" name="filename">
		<div id="tab" class="tab">
			<table>
				<thead>
					<tr><td>名称</td><td>大小</td></tr>
				</thead>
				<tbody id="tb">
				</tbody>
			</table>
		</div>
		<input id="submitBtn" type="button" onclick="upload()" value="提交">
	</body>
	<script type="text/javascript">
	 var selectedFile;	
	 var filename;
	 var arrfilename = new Array();
	 var arrfile = new Array();
	 $("#fileSelector").change(function(){  
		 /* 选择文件操作*/
	 	     selectedFile = document.getElementById('fileSelector').files[0];
			 /* 拿到文件名字*/
	 	     filename = selectedFile.name;
			 /* 拿到文件大小*/
			 filesize = selectedFile.size;
			 /* 将文件名字和文件本身存进数组*/
			 arrfilename.push(filename);
			 arrfile.push(selectedFile);
			 /* 将文件和大小一一罗列出来*/
			 var tb = '<tr><td>'+filename+'</td><td>'+filesize+'</td></tr>';
			 console.log(count);
			 $("#tb").append(tb);
		});  
	 function upload(){
		 /* 遍历数组*/
		 for(var i = 0;i<=arrfilename.length;i++){
		 	var cos = new COS({
		 	SecretId: '*****************************',
		 	SecretKey: '**************************',
		 	})
		 		cos.putObject({
		 		Bucket: 'ky-1254466590',  
		 		Region: 'ap-shanghai',  
				/* 名字获取数组下标*/
		 		Key: arrfilename[i],
		 		StorageClass: 'STANDARD',
		 		Body: arrfile[i], // 上传文件对象(通过下标获取)
		 		onProgress: function(progressData) {
		 			console.log(JSON.stringify(progressData));
		 		}
		 	}, function(err, data) {
		 		console.log(err || data || - Url);
		 		console.log("URL是:"+data.Location);
		 	});	
		 }
	 }
	</script>
</html>

PS:代码是可以直接使用的,但是里面的js引用路径以及secretId和secretkey还有Bucket和Region的参数改成自己的就

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是悟能了

阅读就是对我最大的支持,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值