@@ -1350,43 +1350,63 @@ function sliceUploadFile() {
13501350 ) ;
13511351}
13521352
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+
13531401function selectFileToUpload ( ) {
13541402 // 选择本地文件上传
1355- util . selectLocalFile ( function ( files ) {
1403+ util . selectLocalFile ( async function ( files ) {
13561404 var file = files && files [ 0 ] ;
13571405 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 ) ;
13901410 }
13911411 } ) ;
13921412}
0 commit comments