@@ -783,6 +783,58 @@ function abortUploadTaskArray(params, callback) {
783
783
} ) ;
784
784
}
785
785
786
+ // 高级上传
787
+ function uploadFile ( params , callback ) {
788
+ var self = this ;
789
+
790
+ // 判断多大的文件使用分片上传
791
+ var SliceSize = params . SliceSize === undefined ? self . options . SliceSize : params . SliceSize ;
792
+
793
+ // 开始处理每个文件
794
+ var taskList = [ ] ;
795
+
796
+ fs . stat ( params . FilePath , function ( err , stat ) {
797
+
798
+ var isDir = stat . isDirectory ( ) ;
799
+ var FileSize = params . ContentLength = stat . size || 0 ;
800
+ var fileInfo = { TaskId : '' } ;
801
+
802
+ // 整理 option,用于返回给回调
803
+ util . each ( params , function ( v , k ) {
804
+ if ( typeof v !== 'object' && typeof v !== 'function' ) {
805
+ fileInfo [ k ] = v ;
806
+ }
807
+ } ) ;
808
+
809
+ // 处理文件 TaskReady
810
+ var _onTaskReady = params . onTaskReady ;
811
+ var onTaskReady = function ( tid ) {
812
+ fileInfo . TaskId = tid ;
813
+ _onTaskReady && _onTaskReady ( tid ) ;
814
+ } ;
815
+ params . onTaskReady = onTaskReady ;
816
+
817
+ // 处理文件完成
818
+ var _onFileFinish = params . onFileFinish ;
819
+ var onFileFinish = function ( err , data ) {
820
+ _onFileFinish && _onFileFinish ( err , data , fileInfo ) ;
821
+ callback && callback ( err , data ) ;
822
+ } ;
823
+
824
+ // 添加上传任务
825
+ var api = FileSize <= SliceSize || isDir ? 'putObject' : 'sliceUploadFile' ;
826
+ if ( api === 'putObject' ) {
827
+ params . Body = isDir ? '' : fs . createReadStream ( params . FilePath ) ;
828
+ params . Body . isSdkCreated = true ;
829
+ }
830
+ taskList . push ( {
831
+ api : api ,
832
+ params : params ,
833
+ callback : onFileFinish ,
834
+ } ) ;
835
+ self . _addTasks ( taskList ) ;
836
+ } ) ;
837
+ }
786
838
787
839
// 批量上传文件
788
840
function uploadFiles ( params , callback ) {
@@ -1352,6 +1404,7 @@ function downloadFile(params, callback) {
1352
1404
var API_MAP = {
1353
1405
sliceUploadFile : sliceUploadFile ,
1354
1406
abortUploadTask : abortUploadTask ,
1407
+ uploadFile : uploadFile ,
1355
1408
uploadFiles : uploadFiles ,
1356
1409
sliceCopyFile : sliceCopyFile ,
1357
1410
downloadFile : downloadFile ,
0 commit comments