(转)七牛云文件上传aardio调用库分享

By admin at 2021-02-28 • 0人收藏 • 1605人看过

感谢: 周 (332XXX281) 分享


qiniuyun.aardio 库代码如下:

import web.rest.jsonClient;  
import crypt.hmac;
import crypt.bin; 
import fsys.ini

namespace qiniuyun;

class auth{
	ctor(accessKey,secretKey){
		this = ..web.rest.jsonClient() 
		this.accessKey = accessKey
		this.secretKey = secretKey;
		this.ini = ..fsys.ini("/config.ini")
		
		base64_urlSafeEncode = function(str){
			str = ..string.replace(str,'+', '-');
			return ..string.replace(str,'/', '_');
		}
		
		
		uploadToken = function(bucket,fileName,override){
        	var scope = bucket;
        	if (override == true ) {
            	scope += ':' ++ fileName;
        	}
        	var deadline = tonumber(..time()) + 3600;
        	var putPolicy = ..string.format('{"scope":"%s","deadline":%i}' ,scope,deadline)
			var encoded = ..crypt.bin.encodeBase64(putPolicy)
			var encoded_signed = base64_urlSafeEncode(..crypt.bin.encodeBase64( ..crypt.hmac.sha1(this.secretKey , encoded ).getValue() ))
			return this.accessKey + ":" + encoded_signed + ":" + encoded;
		}
	
	};
	
	uploadFile = function(bucket,filePath,fileName,override){
		
		
		var url = this.ini.read("http","up")
		if(url == null){
			var res = this.api('https://uc.qbox.me/v1/query?ak='++ this.accessKey ++'&bucket='++bucket).get()
			url = res.http.up[1]
			this.ini.write("http","up", url )
		}
		
		
		if(fileName == null){
			fileName = ..io.splitpath(filePath).file
		}
		var token = uploadToken(bucket,fileName,override) ;
		
		var restApi = this.api(url++"/")
		this.sendMultipartForm( {
			key = fileName;
			token = token;
 			file = "@"++filePath;
 			}
		)  
		return restApi();
	}	
}

调用示例: 注意下面的key请去七牛云申请,然后替换为你申请到的

accessKey = 'accessKey ';
secretKey = 'secretKey ';
bucket = 'bucket ';

qiniu = qiniuyun.auth(accessKey,secretKey) 
console.dump(qiniu.uploadFile(bucket,'E:/q.txt','haha.txt')) //普通上传
console.dump(qiniu.uploadFile(bucket,'E:/q.txt','haha.txt',true)) //覆盖上传


4 个回复 | 最后更新于 2021-04-11
2021-03-04   #1
2021-03-06   #2

回复#1 @jacen_he :

crypt.bin.encodeUrlBase64() 会把 = 号替换掉。七牛云好像弄的并不标准。


2021-03-06   #3
2021-04-11   #4

回复#3 @jacen_he :

多谢

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...