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

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

感谢: 周 (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 :

多谢

登录后方可回帖

登 录
信息栏
公 告:

专注分享

谢绝纯提问

谢谢合作!
本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...