@@ -1350,43 +1350,63 @@ function sliceUploadFile() {
1350
1350
) ;
1351
1351
}
1352
1352
1353
+ function upload ( file ) {
1354
+ // stsUrl 是上方搭建的临时密钥服务
1355
+ const stsUrl = `http://127.0.0.1:3000/getKeyAndCredentials?filename=${ file . name } ` ;
1356
+ return new Promise ( ( resolve , reject ) => {
1357
+ fetch ( stsUrl )
1358
+ . then ( ( response ) => response . json ( ) )
1359
+ . then ( ( data ) => {
1360
+ // 服务端接口需要返回:上传的存储桶、地域、随机路径的对象键、临时密钥
1361
+ console . log ( 'getKeyAndCredentials:' , data ) ;
1362
+ // 在返回值里取临时密钥信息,上传的文件路径信息
1363
+ const { TmpSecretId, TmpSecretKey, SessionToken, StartTime, ExpiredTime, Bucket, Region, Key } = data ;
1364
+ // 创建 JS SDK 实例,传入临时密钥参数
1365
+ // 其他配置项可参考下方 初始化配置项
1366
+ const cos = new COS ( {
1367
+ SecretId : TmpSecretId ,
1368
+ SecretKey : TmpSecretKey ,
1369
+ SecurityToken : SessionToken ,
1370
+ StartTime : StartTime ,
1371
+ ExpiredTime : ExpiredTime ,
1372
+ } ) ;
1373
+ // 上传文件
1374
+ cos . uploadFile (
1375
+ {
1376
+ Bucket,
1377
+ Region,
1378
+ Key,
1379
+ Body : file , // 要上传的文件对象。
1380
+ onProgress : function ( progressData ) {
1381
+ console . log ( '上传进度:' , progressData ) ;
1382
+ } ,
1383
+ } ,
1384
+ function ( err , data ) {
1385
+ console . log ( '上传结束' , err || data ) ;
1386
+ if ( err ) {
1387
+ reject ( err ) ;
1388
+ } else {
1389
+ resolve ( data ) ;
1390
+ }
1391
+ }
1392
+ ) ;
1393
+ } )
1394
+ . catch ( ( error ) => {
1395
+ console . error ( '获取上传路径和临时密钥失败' , error ) ;
1396
+ reject ( error ) ;
1397
+ } ) ;
1398
+ } ) ;
1399
+ }
1400
+
1353
1401
function selectFileToUpload ( ) {
1354
1402
// 选择本地文件上传
1355
- util . selectLocalFile ( function ( files ) {
1403
+ util . selectLocalFile ( async function ( files ) {
1356
1404
var file = files && files [ 0 ] ;
1357
1405
if ( ! file ) return ;
1358
- if ( file . size > 1024 * 1024 * 3 ) {
1359
- cos . sliceUploadFile (
1360
- {
1361
- Bucket : config . Bucket , // Bucket 格式:test-1250000000
1362
- Region : config . Region ,
1363
- Key : file . name ,
1364
- Body : file ,
1365
- // Callback: COS.util.encodeBase64(JSON.stringify(callback)),
1366
- // CallbackVar: COS.util.encodeBase64(JSON.stringify(callbackVar)),
1367
- // ReturnBody: COS.util.encodeBase64(JSON.stringify(returnBody)),
1368
- // PicOperations: '{"is_pic_info": 1, "rules": [{"fileid": "test.jpg", "rule": "imageMogr2/thumbnail/!50p"}]}',
1369
- } ,
1370
- function ( err , data ) {
1371
- logger . log ( 'selectFileToUpload:' , err || data ) ;
1372
- }
1373
- ) ;
1374
- } else {
1375
- cos . putObject (
1376
- {
1377
- Bucket : config . Bucket , // Bucket 格式:test-1250000000
1378
- Region : config . Region ,
1379
- Key : file . name ,
1380
- Body : file ,
1381
- // Callback: COS.util.encodeBase64(JSON.stringify(callback)),
1382
- // CallbackVar: COS.util.encodeBase64(JSON.stringify(callbackVar)),
1383
- // ReturnBody: COS.util.encodeBase64(JSON.stringify(returnBody)),
1384
- // PicOperations: '{"is_pic_info": 1, "rules": [{"fileid": "test.jpg", "rule": "imageMogr2/thumbnail/!50p"}]}',
1385
- } ,
1386
- function ( err , data ) {
1387
- logger . log ( 'selectFileToUpload:' , err || data ) ;
1388
- }
1389
- ) ;
1406
+ try {
1407
+ const res = await upload ( file ) ;
1408
+ } catch ( e ) {
1409
+ console . log ( e ) ;
1390
1410
}
1391
1411
} ) ;
1392
1412
}
0 commit comments