Skip to content

Commit 47ff7f9

Browse files
committed
fix qiniu upload bug
1 parent 21063a6 commit 47ff7f9

1 file changed

Lines changed: 37 additions & 18 deletions

File tree

core/utils/common.js

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,12 @@ common.unzipFile = function (zipFile, outputPath) {
117117
});
118118
};
119119

120-
common.uptoken = function (bucket, key) {
121-
var putPolicy = new qiniu.rs.PutPolicy(bucket+":"+key);
122-
return putPolicy.token();
120+
common.getUploadTokenQiniu = function (mac, bucket, key) {
121+
var options = {
122+
scope: bucket + ":" + key
123+
}
124+
var putPolicy = new qiniu.rs.PutPolicy(options);
125+
return putPolicy.uploadToken(mac);
123126
};
124127

125128
common.uploadFileToStorage = function (key, filePath) {
@@ -209,27 +212,43 @@ common.getBlobDownloadUrl = function (blobUrl) {
209212

210213
common.uploadFileToQiniu = function (key, filePath) {
211214
return new Promise((resolve, reject) => {
212-
qiniu.conf.ACCESS_KEY = _.get(config, "qiniu.accessKey");
213-
qiniu.conf.SECRET_KEY = _.get(config, "qiniu.secretKey");
215+
var accessKey = _.get(config, "qiniu.accessKey");
216+
var secretKey = _.get(config, "qiniu.secretKey");
214217
var bucket = _.get(config, "qiniu.bucketName", "");
215-
var client = new qiniu.rs.Client();
216-
client.stat(bucket, key, (err, ret) => {
217-
if (!err) {
218-
resolve(ret.hash);
218+
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
219+
var conf = new qiniu.conf.Config();
220+
var bucketManager = new qiniu.rs.BucketManager(mac, conf);
221+
bucketManager.stat(bucket, key, (respErr, respBody, respInfo) => {
222+
if (respErr) {
223+
log.debug('uploadFileToQiniu file stat:', respErr);
224+
return reject(new AppError.AppError(respErr.message));
225+
}
226+
log.debug('uploadFileToQiniu file stat respBody:', respBody);
227+
log.debug('uploadFileToQiniu file stat respInfo:', respInfo);
228+
if (respInfo.statusCode == 200) {
229+
resolve(respBody.hash);
219230
} else {
220231
try {
221-
var uptoken = common.uptoken(bucket, key);
232+
var uploadToken = common.getUploadTokenQiniu(mac, bucket, key);
222233
} catch (e) {
223-
return reject(e);
234+
return reject(new AppError.AppError(e.message));
224235
}
225-
var extra = new qiniu.io.PutExtra();
226-
qiniu.io.putFile(uptoken, key, filePath, extra, (err, ret) => {
227-
if(!err) {
228-
// 上传成功, 处理返回值
229-
resolve(ret.hash);
230-
} else {
236+
var formUploader = new qiniu.form_up.FormUploader(conf);
237+
var putExtra = new qiniu.form_up.PutExtra();
238+
formUploader.putFile(uploadToken, key, filePath, putExtra, (respErr, respBody, respInfo) => {
239+
if(respErr) {
240+
log.error('uploadFileToQiniu putFile:', respErr);
231241
// 上传失败, 处理返回代码
232-
reject(new AppError.AppError(JSON.stringify(err)));
242+
return reject(new AppError.AppError(JSON.stringify(respErr)));
243+
} else {
244+
log.debug('uploadFileToQiniu putFile respBody:', respBody);
245+
log.debug('uploadFileToQiniu putFile respInfo:', respInfo);
246+
// 上传成功, 处理返回值
247+
if (respInfo.statusCode == 200) {
248+
return resolve(respBody.hash);
249+
} else {
250+
return reject(new AppError.AppError(respBody.error));
251+
}
233252
}
234253
});
235254
}

0 commit comments

Comments
 (0)