// 七牛云服务模块 - ESM 格式 import qiniu from "qiniu"; /** * 生成七牛云上传凭证 * @param {Object} qiniuData - 七牛云配置信息 * @param {string} qiniuData.ak - AccessKey * @param {string} qiniuData.sk - SecretKey * @param {string} qiniuData.bucket - 存储空间名称 * @param {string} qiniuData.domain - 访问域名 * @param {string} qiniuData.zoneUrl - 上传区域地址 * @param {string} qiniuData.zone - 存储区域(如 z2) * @param {number} qiniuData.max_file_size - 最大文件大小(MB) * @returns {Promise} 返回上传凭证信息 */ export function qiniuUptoken(qiniuData) { return new Promise((resolve) => { const accessKey = qiniuData.ak; const secretKey = qiniuData.sk; const max_file_size = qiniuData.max_file_size || 400; const options = { scope: qiniuData.bucket // scope = :,key可省略 }; const mac = new qiniu.auth.digest.Mac(accessKey, secretKey); const config = new qiniu.conf.Config(); // 设置空间对应的机房 if (qiniuData.zone === "z2") { config.zone = qiniu.zone.Zone_z2; } // 参考文档: http://developer.qiniu.com/article/developer/security/put-policy.html const putPolicy = new qiniu.rs.PutPolicy(options); // putPolicy.expires = "3600" // 默认token一小时内生效 // putPolicy.mimeLimit = "image/*" // image/*表示只允许上传图片类型 resolve({ uptoken: putPolicy.uploadToken(mac), domain: qiniuData.domain, zoneUrl: qiniuData.zoneUrl, max_file_size: max_file_size }); }); }