@@ -13,6 +13,7 @@ const mkdirp = require('mkdirp');
1313const conf = require ( '../conf' ) ;
1414const util = require ( '../util' ) ;
1515const rpc = require ( '../rpc' ) ;
16+ const libUtil = require ( 'util' ) ;
1617
1718const { SERVICE_NAME } = require ( '../httpc/region' ) ;
1819const { ResponseWrapper } = require ( '../httpc/responseWrapper' ) ;
@@ -30,7 +31,10 @@ const {
3031} = require ( './internal' ) ;
3132
3233exports . ResumeUploader = ResumeUploader ;
33- exports . PutExtra = PutExtra ;
34+ exports . PutExtra = libUtil . deprecate (
35+ PutExtra ,
36+ 'PutExtra constructor is deprecated. Use PutExtra.create() for v2 uploads or explicitly specify version parameter.'
37+ ) ;
3438exports . createResumeRecorder = createResumeRecorder ;
3539exports . createResumeRecorderSync = createResumeRecorderSync ;
3640
@@ -58,13 +62,13 @@ function ResumeUploader (config) {
5862 */
5963
6064/**
61- * 上传可选参数
65+ * 上传可选参数,分片上传默认使用 v1 版本
6266 * @class
6367 * @constructor
6468 * @param {string } [fname] 请求体中的文件的名称
6569 * @param {Object } [params] 额外参数设置,参数名称必须以x:开头
6670 * @param {string | null } [mimeType] 指定文件的mimeType
67- * @param {string | null } [resumeRecordFile] DEPRECATED: 使用 `` 与 `` 代替;断点续传的已上传的部分信息记录文件路径
71+ * @param {string | null } [resumeRecordFile] DEPRECATED: 使用 `resumeRecorder ` 与 `resumeKey ` 代替;断点续传的已上传的部分信息记录文件路径
6872 * @param {function(number, number):void } [progressCallback] 上传进度回调,回调参数为 (uploadBytes, totalBytes)
6973 * @param {number } [partSize] 分片上传v2必传字段 默认大小为4MB 分片大小范围为1 MB - 1 GB
7074 * @param {'v1' | 'v2' } [version] 分片上传版本 目前支持v1/v2版本 默认v1
@@ -97,6 +101,39 @@ function PutExtra (
97101 this . resumeKey = resumeKey || null ;
98102}
99103
104+ /**
105+ * 上传可选参数,分片上传默认使用 v2 版本
106+ * @class
107+ * @constructor
108+ * @param {string } [fname] 请求体中的文件的名称
109+ * @param {Object } [params] 额外参数设置,参数名称必须以x:开头
110+ * @param {string | null } [mimeType] 指定文件的mimeType
111+ * @param {string | null } [resumeRecordFile] DEPRECATED: 使用 `resumeRecorder` 与 `resumeKey` 代替;断点续传的已上传的部分信息记录文件路径
112+ * @param {function(number, number):void } [progressCallback] 上传进度回调,回调参数为 (uploadBytes, totalBytes)
113+ * @param {number } [partSize] 分片上传v2必传字段 默认大小为4MB 分片大小范围为1 MB - 1 GB
114+ * @param {'v1' | 'v2' } [version] 分片上传版本 目前支持v1/v2版本 默认v2
115+ * @param {Object } [metadata] 元数据设置,参数名称必须以 x-qn-meta-${name}: 开头
116+ * @param {JsonFileRecorder } [resumeRecorder] 通过 `createResumeRecorder` 或 `createResumeRecorderSync` 获取,优先级比 `resumeRecordFile` 低
117+ * @param {string } [resumeKey] 断点续传记录文件的具体文件名,不设置时会由当次上传自动生成
118+ */
119+ PutExtra . create = function (
120+ fname ,
121+ params ,
122+ mimeType ,
123+ resumeRecordFile ,
124+ progressCallback ,
125+ partSize ,
126+ version ,
127+ metadata ,
128+ resumeRecorder ,
129+ resumeKey ) {
130+ return new PutExtra (
131+ fname , params , mimeType , resumeRecordFile ,
132+ progressCallback , partSize , version || 'v2' ,
133+ metadata , resumeRecorder , resumeKey
134+ ) ;
135+ } ;
136+
100137/**
101138 * @private
102139 * @param {Object } options
@@ -222,6 +259,7 @@ function _getRegionsRetrier (options) {
222259 */
223260
224261/**
262+ * @deprecated use putStreamV2 instead
225263 * @param {string } uploadToken
226264 * @param {string | null } key
227265 * @param {stream.Readable } rsStream
@@ -237,11 +275,45 @@ ResumeUploader.prototype.putStream = function (
237275 rsStreamLen ,
238276 putExtra ,
239277 callbackFunc
278+ ) {
279+ // PutExtra
280+ putExtra = getDefaultPutExtra (
281+ putExtra ,
282+ {
283+ key
284+ }
285+ ) ;
286+ return this . putStreamV2 (
287+ uploadToken ,
288+ key ,
289+ rsStream ,
290+ rsStreamLen ,
291+ putExtra ,
292+ callbackFunc
293+ ) ;
294+ } ;
295+
296+ /**
297+ * @param {string } uploadToken
298+ * @param {string | null } key
299+ * @param {stream.Readable } rsStream
300+ * @param {number } rsStreamLen
301+ * @param {PutExtra } putExtra
302+ * @param {reqCallback } [callbackFunc]
303+ * @returns {Promise<UploadResult> }
304+ */
305+ ResumeUploader . prototype . putStreamV2 = function (
306+ uploadToken ,
307+ key ,
308+ rsStream ,
309+ rsStreamLen ,
310+ putExtra ,
311+ callbackFunc
240312) {
241313 const preferredScheme = this . config . useHttpsDomain ? 'https' : 'http' ;
242314
243315 // PutExtra
244- putExtra = getDefaultPutExtra (
316+ putExtra = getDefaultPutExtraV2 (
245317 putExtra ,
246318 {
247319 key
@@ -847,6 +919,7 @@ function completeParts (
847919}
848920
849921/**
922+ * @deprecated Use putFileV2 instead
850923 * @param {string } uploadToken
851924 * @param {string | null } key
852925 * @param {string } localFile
@@ -860,11 +933,31 @@ ResumeUploader.prototype.putFile = function (
860933 localFile ,
861934 putExtra ,
862935 callbackFunc
936+ ) {
937+ // PutExtra
938+ putExtra = putExtra || new PutExtra ( ) ;
939+ return this . putFileV2 ( uploadToken , key , localFile , putExtra , callbackFunc ) ;
940+ } ;
941+
942+ /**
943+ * @param {string } uploadToken
944+ * @param {string | null } key
945+ * @param {string } localFile
946+ * @param {PutExtra } putExtra
947+ * @param {reqCallback } [callbackFunc]
948+ * @returns {Promise<UploadResult> }
949+ */
950+ ResumeUploader . prototype . putFileV2 = function (
951+ uploadToken ,
952+ key ,
953+ localFile ,
954+ putExtra ,
955+ callbackFunc
863956) {
864957 const preferredScheme = this . config . useHttpsDomain ? 'https' : 'http' ;
865958
866959 // PutExtra
867- putExtra = putExtra || new PutExtra ( ) ;
960+ putExtra = putExtra || PutExtra . create ( ) ;
868961 if ( ! putExtra . mimeType ) {
869962 putExtra . mimeType = mime . getType ( localFile ) ;
870963 }
@@ -929,6 +1022,7 @@ ResumeUploader.prototype.putFile = function (
9291022} ;
9301023
9311024/**
1025+ * @deprecated use putFileWithoutKeyV2 instead
9321026 * @param {string } uploadToken
9331027 * @param {string } localFile
9341028 * @param {PutExtra } putExtra
@@ -944,6 +1038,22 @@ ResumeUploader.prototype.putFileWithoutKey = function (
9441038 return this . putFile ( uploadToken , null , localFile , putExtra , callbackFunc ) ;
9451039} ;
9461040
1041+ /**
1042+ * @param {string } uploadToken
1043+ * @param {string } localFile
1044+ * @param {PutExtra } putExtra
1045+ * @param {reqCallback } [callbackFunc]
1046+ * @returns {Promise<UploadResult> }
1047+ */
1048+ ResumeUploader . prototype . putFileWithoutKeyV2 = function (
1049+ uploadToken ,
1050+ localFile ,
1051+ putExtra ,
1052+ callbackFunc
1053+ ) {
1054+ return this . putFileV2 ( uploadToken , null , localFile , putExtra , callbackFunc ) ;
1055+ } ;
1056+
9471057/**
9481058 * @param {PutExtra } putExtra
9491059 * @param {Object } options
@@ -976,6 +1086,17 @@ function getDefaultPutExtra (putExtra, options) {
9761086 return putExtra ;
9771087}
9781088
1089+ /**
1090+ * @param {PutExtra } putExtra
1091+ * @param {Object } options
1092+ * @param {string | null } [options.key]
1093+ * @returns {PutExtra }
1094+ */
1095+ function getDefaultPutExtraV2 ( putExtra , options ) {
1096+ putExtra = putExtra || PutExtra . create ( ) ;
1097+ return getDefaultPutExtra ( putExtra , options ) ;
1098+ }
1099+
9791100/**
9801101 * @class
9811102 * @param {string } baseDirPath
0 commit comments