@@ -31,7 +31,7 @@ function PutExtra(fname, params, mimeType, crc32, checkCrc) {
3131 this . checkCrc = checkCrc || 1 ;
3232}
3333
34- FormUploader . prototype . putStream = function ( uploadToken , key , rsStream ,
34+ FormUploader . prototype . putStream = function ( uploadToken , key , fsStream ,
3535 putExtra , callbackFunc ) {
3636 putExtra = putExtra || new PutExtra ( ) ;
3737 if ( ! putExtra . mimeType ) {
@@ -42,7 +42,7 @@ FormUploader.prototype.putStream = function(uploadToken, key, rsStream,
4242 putExtra . fname = key ? key : 'fname' ;
4343 }
4444
45- rsStream . on ( "error" , function ( err ) {
45+ fsStream . on ( "error" , function ( err ) {
4646 //callbackFunc
4747 callbackFunc ( err , null , null ) ;
4848 return ;
@@ -63,8 +63,10 @@ FormUploader.prototype.putStream = function(uploadToken, key, rsStream,
6363 var accessKey = util . getAKFromUptoken ( uploadToken ) ;
6464 var bucket = util . getBucketFromUptoken ( uploadToken ) ;
6565 if ( useCache ) {
66- var postForm = createMultipartForm ( uploadToken , key , rsStream , putExtra ) ;
67- putReq ( this . config , postForm , callbackFunc ) ;
66+ createMultipartForm ( uploadToken , key , fsStream , putExtra , function (
67+ postForm ) {
68+ putReq ( this . config , postForm , callbackFunc ) ;
69+ } ) ;
6870 } else {
6971 zone . getZoneInfo ( accessKey , bucket , function ( err , cZoneInfo ,
7072 cZoneExpire ) {
@@ -78,9 +80,12 @@ FormUploader.prototype.putStream = function(uploadToken, key, rsStream,
7880 that . config . zoneExpire = cZoneExpire ;
7981
8082 //req
81- var postForm = createMultipartForm ( uploadToken , key , rsStream ,
82- putExtra ) ;
83- putReq ( that . config , postForm , callbackFunc ) ;
83+ createMultipartForm ( uploadToken , key , fsStream ,
84+ putExtra ,
85+ function ( postForm ) {
86+ console . log ( "uploading" ) ;
87+ putReq ( that . config , postForm , callbackFunc ) ;
88+ } ) ;
8489 } ) ;
8590 }
8691}
@@ -116,29 +121,25 @@ function putReq(config, postForm, callbackFunc) {
116121//
117122FormUploader . prototype . put = function ( uploadToken , key , body , putExtra ,
118123 callbackFunc ) {
119- var rsStream = new Readable ( ) ;
120- rsStream . push ( body ) ;
121- rsStream . push ( null ) ;
124+ var fsStream = new Readable ( ) ;
125+ fsStream . push ( body ) ;
126+ fsStream . push ( null ) ;
122127
123128 putExtra = putExtra || new PutExtra ( ) ;
124- return this . putStream ( uploadToken , key , rsStream , putExtra , callbackFunc )
129+ return this . putStream ( uploadToken , key , fsStream , putExtra , callbackFunc )
125130}
126131
127132FormUploader . prototype . putWithoutKey = function ( uploadToken , body , putExtra ,
128133 callbackFunc ) {
129134 return this . put ( uploadToken , null , body , putExtra , callbackFunc ) ;
130135}
131136
132- function createMultipartForm ( uploadToken , key , rsStream , putExtra ) {
137+ function createMultipartForm ( uploadToken , key , fsStream , putExtra , callbackFunc ) {
133138 var postForm = formstream ( ) ;
134139 postForm . field ( 'token' , uploadToken ) ;
135140 if ( key ) {
136141 postForm . field ( 'key' , key ) ;
137142 }
138- postForm . stream ( 'file' , rsStream , putExtra . fname , putExtra . mimeType ) ;
139- if ( putExtra . crc32 ) {
140- postForm . field ( 'crc32' , putExtra . crc32 ) ;
141- }
142143
143144 //putExtra params
144145 for ( var k in putExtra . params ) {
@@ -147,7 +148,22 @@ function createMultipartForm(uploadToken, key, rsStream, putExtra) {
147148 }
148149 }
149150
150- return postForm ;
151+ var fileBody = [ ] ;
152+ fsStream . on ( 'data' , function ( data ) {
153+ fileBody . push ( data ) ;
154+ } ) ;
155+
156+ fsStream . on ( 'end' , function ( ) {
157+ fileBody = Buffer . concat ( fileBody ) ;
158+ var bodyCrc32 = parseInt ( "0x" + getCrc32 ( fileBody ) ) ;
159+ postForm . field ( 'crc32' , bodyCrc32 ) ;
160+
161+ var newFsStream = new Readable ( ) ;
162+ newFsStream . push ( fileBody ) ;
163+ newFsStream . push ( null ) ;
164+ postForm . stream ( 'file' , newFsStream , putExtra . fname , putExtra . mimeType ) ;
165+ callbackFunc ( postForm ) ;
166+ } ) ;
151167}
152168
153169
@@ -160,7 +176,7 @@ function createMultipartForm(uploadToken, key, rsStream, putExtra) {
160176FormUploader . prototype . putFile = function ( uploadToken , key , localFile , putExtra ,
161177 callbackFunc ) {
162178 putExtra = putExtra || new PutExtra ( ) ;
163- var rsStream = fs . createReadStream ( localFile ) ;
179+ var fsStream = fs . createReadStream ( localFile ) ;
164180
165181 if ( ! putExtra . mimeType ) {
166182 putExtra . mimeType = mime . lookup ( localFile ) ;
@@ -170,7 +186,7 @@ FormUploader.prototype.putFile = function(uploadToken, key, localFile, putExtra,
170186 putExtra . fname = path . basename ( localFile ) ;
171187 }
172188
173- return this . putStream ( uploadToken , key , rsStream , putExtra , callbackFunc ) ;
189+ return this . putStream ( uploadToken , key , fsStream , putExtra , callbackFunc ) ;
174190}
175191
176192FormUploader . prototype . putFileWithoutKey = function ( uploadToken , localFile ,
0 commit comments