使用阿里云的函数计算来实现OSS资源的打包下载
·
文档地址:如何使用函数计算将多个文件打包下载到本地_对象存储 OSS-阿里云
计算函数可以通过对外公网域名进行访问:

计算函数的参数有几个:
bucket:使用的OSS的bucket,必传
source-dir:需要打包的文件所在的目录,必传,传这个参数会将这个目录下的文件都进行打包
source-files:需要打包的文件,多个,传这个会将这些文件都进行打包
dest-file:保存在OSS中的包含文件名的zip包路径
可以通过对外公网域名进行POST请求来进行打包。(传参类型为application/json)
如果不想将文件下载到本地,而是返回打包好的阿里云OSS地址,需要进行一下修改,注释36行,并修改39行的返回值
修改前:

修改后:

这样就会返回zip包的相对路径,加上OSS域名返回给前端就可以跳转去下载了
例如返回了:out/1.zip
加上OSS域名返回:https://***.oss-cn-guangzhou.aliyuncs.com/out/1.zip
自定义文件名:
如果想自定义压缩包里的文件名称,可以通过修改83行的zip_add_file方法来实现:
def zip_add_file(zip_file, key):
key_arr = key.split('::')
LOG.info('add zip file: %s', key_arr[0])
if key[-1] == '/':
return
obj = oss_client.get_object(key_arr[0])
print(key_arr)
zip_file.write_file(key_arr[1], obj,
compress_type=zipfile.ZIP_STORED)
其中::为文件的分隔符,这样的话传输数据需要这样传:
{
"bucket": "bucket-name",
"source-dir": "upload/",
"source-files": ["upload/1.jpg::1a.jpg","upload/2.jpg::2b.jpg"]
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)