Skip to content

Commit df2eba4

Browse files
committed
browserify upload
1 parent ac4df62 commit df2eba4

4 files changed

Lines changed: 66 additions & 50 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
'use strict';
2+
3+
module.exports = function upload(file, AV) {
4+
//use /files endpoint.
5+
file._previousSave = file._source.then(function(base64, type) {
6+
var data = {
7+
base64: base64,
8+
_ContentType: type,
9+
ACL: file._acl,
10+
mime_type: type,
11+
metaData: file._metaData
12+
};
13+
return AV._request("files", file._name, null, 'POST', data);
14+
}).then(function(response) {
15+
file._name = response.name;
16+
file._url = response.url;
17+
file.id = response.objectId;
18+
if(response.size)
19+
file._metaData.size = response.size;
20+
return file;
21+
});
22+
};

lib/browserify-wrapper/upload.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'use strict';
2+
3+
var qiniu = require('qiniu');
4+
var Promise = require('../promise');
5+
6+
module.exports =function upload(file) {
7+
file._previousSave = file._source.then(function(base64, type) {
8+
file._base64 = base64;
9+
return file._qiniuToken(type);
10+
}).then(function(response) {
11+
//Use qiniu sdk to upload files to qiniu.
12+
var qiniu = require('qiniu');
13+
file._url = response.url;
14+
file._bucket = response.bucket;
15+
file.id = response.objectId;
16+
//Get the uptoken to upload files to qiniu.
17+
var uptoken = response.token;
18+
var promise = new Promise();
19+
var extra = new qiniu.io.PutExtra();
20+
if(file._metaData.mime_type)
21+
extra.mimeType = file._metaData.mime_type;
22+
var body = new Buffer(file._base64, 'base64');
23+
qiniu.io.put(uptoken, file._qiniu_key, body, extra, function(err, ret) {
24+
delete file._qiniu_key;
25+
delete file._base64;
26+
if(!err) {
27+
promise.resolve(file);
28+
} else {
29+
promise.reject(err);
30+
//destroy this file object when upload fails.
31+
file.destroy();
32+
}
33+
});
34+
return promise;
35+
});
36+
};

lib/file.js

Lines changed: 5 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -554,38 +554,9 @@ module.exports = function(AV) {
554554
}
555555
var self = this;
556556
if (!self._previousSave) {
557-
if(self._source){
558-
if(AV._isNode){
559-
self._previousSave = self._source.then(function(base64, type) {
560-
self._base64 = base64;
561-
return self._qiniuToken(type);
562-
}).then(function(response) {
563-
//Use qiniu sdk to upload files to qiniu.
564-
var qiniu = require('qiniu');
565-
self._url = response.url;
566-
self._bucket = response.bucket;
567-
self.id = response.objectId;
568-
//Get the uptoken to upload files to qiniu.
569-
var uptoken = response.token;
570-
var promise = new AV.Promise();
571-
var extra = new qiniu.io.PutExtra();
572-
if(self._metaData.mime_type)
573-
extra.mimeType = self._metaData.mime_type;
574-
var body = new Buffer(self._base64, 'base64');
575-
qiniu.io.put(uptoken, self._qiniu_key, body, extra, function(err, ret) {
576-
delete self._qiniu_key;
577-
delete self._base64;
578-
if(!err) {
579-
promise.resolve(self);
580-
} else {
581-
promise.reject(err);
582-
//destroy this file object when upload fails.
583-
self.destroy();
584-
}
585-
});
586-
return promise;
587-
});
588-
} else if (this._isBlob) {
557+
if(self._source) {
558+
if (this._isBlob) {
559+
// TODO: remove this code and use qiniu SDK
589560
self._previousSave = self._source.then(function(blob, type) {
590561
self._blob = blob;
591562
return self._qiniuToken(type);
@@ -646,24 +617,8 @@ module.exports = function(AV) {
646617
return promise;
647618
});
648619
} else {
649-
//use /files endpoint.
650-
self._previousSave = self._source.then(function(base64, type) {
651-
var data = {
652-
base64: base64,
653-
_ContentType: type,
654-
ACL: self._acl,
655-
mime_type: type,
656-
metaData: self._metaData
657-
};
658-
return AV._request("files", self._name, null, 'POST', data);
659-
}).then(function(response) {
660-
self._name = response.name;
661-
self._url = response.url;
662-
self.id = response.objectId;
663-
if(response.size)
664-
self._metaData.size = response.size;
665-
return self;
666-
});
620+
var upload = require('./browserify-wrapper/upload');
621+
upload(self, AV);
667622
}
668623
} else if(self._url && self._metaData['__source'] == 'external') {
669624
//external link file.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,8 @@
3434
"author": {
3535
"name": "dennis zhuang",
3636
"email": "xzhuang@avos.com"
37+
},
38+
"browser": {
39+
3740
}
3841
}

0 commit comments

Comments
 (0)