leancloud-storage
Version:
LeanCloud JavaScript SDK.
30 lines (27 loc) • 935 B
JavaScript
;
var request = require('superagent');
var AVPromise = require('../promise');
module.exports = function upload(uploadInfo, data, file) {
var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
file.attributes.url = uploadInfo.url;
file._bucket = uploadInfo.bucket;
file.id = uploadInfo.objectId;
return new Promise(function (resolve, reject) {
// 海外节点,针对 S3 才会返回 upload_url
var req = request('PUT', uploadInfo.upload_url).set('Content-Type', file.attributes.metaData.mime_type).send(data);
if (saveOptions.onprogress) {
req.on('progress', saveOptions.onprogress);
}
req.end(function (err, res) {
if (err) {
if (res) {
err.statusCode = res.status;
err.responseText = res.text;
err.response = res.body;
}
return reject(err);
}
resolve(file);
});
});
};