@@ -353,14 +353,13 @@ module.exports = function(AV) {
353353 this . _source = AV . Promise . as ( encodeBase64 ( data ) , guessedType ) ;
354354 this . _metaData . size = data . length ;
355355 } else if ( data && data . base64 ) {
356- this . _source = AV . Promise . as ( data . base64 , guessedType ) ;
357- this . _isBase64 = true ;
356+ // 也可以是 dataURL,内部已做兼容
357+ var dataBase64 = dataURItoBlob ( data . base64 , guessedType ) ;
358+ this . _source = AV . Promise . as ( dataBase64 , guessedType ) ;
358359 } else if ( data && data . blob ) {
359360 this . _source = AV . Promise . as ( data . blob , guessedType ) ;
360- this . _isBlob = true ;
361361 } else if ( typeof ( File ) !== "undefined" && data instanceof File ) {
362362 this . _source = AV . Promise . as ( data , guessedType ) ;
363- this . _isFileObject = true ;
364363 } else if ( AV . _isNode && global . Buffer . isBuffer ( data ) ) {
365364 // use global.Buffer to prevent browserify pack Buffer module
366365 this . _source = AV . Promise . as ( data . toString ( 'base64' ) , guessedType ) ;
@@ -582,75 +581,8 @@ module.exports = function(AV) {
582581 var self = this ;
583582 if ( ! self . _previousSave ) {
584583 if ( self . _source ) {
585- if ( self . _isBlob || self . _isFileObject || self . _isBase64 ) {
586- // TODO: remove this code and use qiniu SDK
587- var dataFormat ;
588- self . _previousSave = self . _source . then ( function ( data , type ) {
589- if ( self . _isBase64 ) {
590- dataFormat = dataURItoBlob ( data , type ) ;
591- } else {
592- dataFormat = data ;
593- }
594- return self . _qiniuToken ( type ) ;
595- } ) . then ( function ( response ) {
596- self . _url = response . url ;
597- self . _bucket = response . bucket ;
598- self . id = response . objectId ;
599- //Get the uptoken to upload files to qiniu.
600- var uptoken = response . token ;
601-
602- var data = new FormData ( ) ;
603- data . append ( "file" , dataFormat , self . _name ) ;
604- data . append ( "key" , self . _qiniu_key ) ;
605- data . append ( "token" , uptoken ) ;
606-
607- var promise = new AV . Promise ( ) ;
608- var handled = false ;
609-
610- var xhr = new AV . XMLHttpRequest ( ) ;
611-
612- xhr . upload . addEventListener ( 'progress' , function ( e ) {
613- if ( e . lengthComputable ) {
614- saveOptions . onProgress && saveOptions . onProgress ( e ) ;
615- }
616- } , false ) ;
617-
618- xhr . onreadystatechange = function ( ) {
619- if ( xhr . readyState === 4 ) {
620- if ( handled ) {
621- return ;
622- }
623- handled = true ;
624-
625- delete self . _qiniu_key ;
626- if ( xhr . status >= 200 && xhr . status < 300 ) {
627- var response ;
628- try {
629- response = JSON . parse ( xhr . responseText ) ;
630- } catch ( e ) {
631- promise . reject ( e ) ;
632- self . destroy ( ) ;
633- }
634- if ( response ) {
635- promise . resolve ( self ) ;
636- } else {
637- promise . reject ( response ) ;
638- }
639- } else {
640- promise . reject ( xhr ) ;
641- self . destroy ( ) ;
642- }
643- }
644- } ;
645- xhr . open ( 'POST' , 'http://upload.qiniu.com' , true ) ;
646- xhr . send ( data ) ;
647-
648- return promise ;
649- } ) ;
650- } else {
651- var upload = require ( './browserify-wrapper/upload' ) ;
652- upload ( self , AV ) ;
653- }
584+ var upload = require ( './browserify-wrapper/upload' ) ;
585+ upload ( self , AV , saveOptions ) ;
654586 } else if ( self . _url && self . _metaData [ '__source' ] == 'external' ) {
655587 //external link file.
656588 var data = {
@@ -664,8 +596,9 @@ module.exports = function(AV) {
664596 self . _name = response . name ;
665597 self . _url = response . url ;
666598 self . id = response . objectId ;
667- if ( response . size )
668- self . _metaData . size = response . size ;
599+ if ( response . size ) {
600+ self . _metaData . size = response . size ;
601+ }
669602 return self ;
670603 } ) ;
671604 }
0 commit comments