Skip to content

Commit

Permalink
兼容 iframe 内上传 iframe 外的 File/Blob
Browse files Browse the repository at this point in the history
  • Loading branch information
carsonxu committed Nov 22, 2018
1 parent b37b0a9 commit 2ac2cdf
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 13 deletions.
10 changes: 5 additions & 5 deletions dist/cos-js-sdk-v5.js
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ var getFileSize = function (api, params, callback) {
if (typeof params.Body === 'string') {
params.Body = new Blob([params.Body]);
}
if (params.Body instanceof window.File || params.Body instanceof window.Blob) {
if (params.Body && (params.Body instanceof Blob || params.Body.constructor.name === 'File' || params.Body.constructor.name === 'Blob')) {
size = params.Body.size;
} else {
callback({ error: 'params body format error, Only allow File|Blob|String.' });
Expand Down Expand Up @@ -1893,6 +1893,7 @@ var defaultOptions = {
AppId: '', // AppId 已废弃,请拼接到 Bucket 后传入,例如:test-1250000000
SecretId: '',
SecretKey: '',
XCosSecurityToken: '',
FileParallelLimit: 3,
ChunkParallelLimit: 3,
ChunkRetryTimes: 3,
Expand All @@ -1909,7 +1910,6 @@ var defaultOptions = {
Protocol: '',
CompatibilityMode: false,
ForcePathStyle: false,
XCosSecurityToken: '',
UseRawKey: false,
UploadCheckContentMd5: false,
UploadIdCacheLimit: 50
Expand Down Expand Up @@ -1937,7 +1937,7 @@ base.init(COS, task);
advance.init(COS, task);

COS.getAuthorization = util.getAuth;
COS.version = '0.4.25';
COS.version = '0.4.26';

module.exports = COS;

Expand Down Expand Up @@ -5550,7 +5550,7 @@ function getObjectUrl(params, callback) {
}, function (AuthData) {
if (!callback) return;
var signUrl = url;
signUrl += '?' + AuthData.Authorization;
signUrl += '?' + (AuthData.Authorization.indexOf('q-signature') > -1 ? AuthData.Authorization : 'sign=' + encodeURIComponent(AuthData.Authorization));
AuthData.XCosSecurityToken && (signUrl += '&x-cos-security-token=' + AuthData.XCosSecurityToken);
AuthData.ClientIP && (signUrl += '&clientIP=' + AuthData.ClientIP);
AuthData.ClientUA && (signUrl += '&clientUA=' + AuthData.ClientUA);
Expand Down Expand Up @@ -10106,7 +10106,7 @@ var request = function (options, callback) {

// body
if (options.body) {
if (!(options.body instanceof window.Blob)) {
if (!(options.body instanceof Blob || options.body.constructor.name === 'File' || options.body.constructor.name === 'Blob')) {
options.data = options.body;
delete options.body;
}
Expand Down
2 changes: 1 addition & 1 deletion dist/cos-js-sdk-v5.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion lib/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -4134,7 +4134,7 @@ var request = function (options, callback) {

// body
if (options.body) {
if (!(options.body instanceof window.Blob)) {
if (!(options.body instanceof Blob || options.body.constructor.name === 'File' || options.body.constructor.name === 'Blob')) {
options.data = options.body;
delete options.body;
}
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
{
"name": "cos-js-sdk-v5",
"version": "0.4.25",
"version": "0.4.26",
"description": "cos js sdk v5",
"main": "index.js",
"scripts": {
"dev": "SET NODE_ENV=development&& webpack -w",
"build": "SET NODE_ENV=production&& webpack",
"sts.js": "node server/sts.js"
"sts.js": "node server/sts.js",
"cos-auth.min.js": "uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m"
},
"repository": {
"type": "git",
Expand Down
3 changes: 2 additions & 1 deletion src/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -1699,7 +1699,8 @@ function getObjectUrl(params, callback) {
}, function (AuthData) {
if (!callback) return;
var signUrl = url;
signUrl += '?' + AuthData.Authorization;
signUrl += '?' + (AuthData.Authorization.indexOf('q-signature') > -1 ?
AuthData.Authorization : 'sign=' + encodeURIComponent(AuthData.Authorization));
AuthData.XCosSecurityToken && (signUrl += '&x-cos-security-token=' + AuthData.XCosSecurityToken);
AuthData.ClientIP && (signUrl += '&clientIP=' + AuthData.ClientIP);
AuthData.ClientUA && (signUrl += '&clientUA=' + AuthData.ClientUA);
Expand Down
4 changes: 2 additions & 2 deletions src/cos.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ var defaultOptions = {
AppId: '', // AppId 已废弃,请拼接到 Bucket 后传入,例如:test-1250000000
SecretId: '',
SecretKey: '',
XCosSecurityToken: '',
FileParallelLimit: 3,
ChunkParallelLimit: 3,
ChunkRetryTimes: 3,
Expand All @@ -26,7 +27,6 @@ var defaultOptions = {
Protocol: '',
CompatibilityMode: false,
ForcePathStyle: false,
XCosSecurityToken: '',
UseRawKey: false,
UploadCheckContentMd5: false,
UploadIdCacheLimit: 50,
Expand Down Expand Up @@ -54,6 +54,6 @@ base.init(COS, task);
advance.init(COS, task);

COS.getAuthorization = util.getAuth;
COS.version = '0.4.25';
COS.version = '0.4.26';

module.exports = COS;
2 changes: 1 addition & 1 deletion src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ var getFileSize = function (api, params, callback) {
if (typeof params.Body === 'string') {
params.Body = new Blob([params.Body]);
}
if (params.Body instanceof window.File || params.Body instanceof window.Blob) {
if ((params.Body && (params.Body instanceof Blob || params.Body.constructor.name === 'File' || params.Body.constructor.name === 'Blob'))) {
size = params.Body.size;
} else {
callback({error: 'params body format error, Only allow File|Blob|String.'});
Expand Down

0 comments on commit 2ac2cdf

Please sign in to comment.