tencentyun / cos-nodejs-sdk-v5

腾讯云 COS Nodejs SDK(XML API)
https://cloud.tencent.com/product/cos
MIT License
234 stars 79 forks source link

putObject 中的 Body对象类型,验证逻辑太严格? #41

Closed 75k closed 5 years ago

75k commented 6 years ago

一个 Atom下的插件,更新 sdk 到最新版以后,没法上传了。提示:params body format error, Only allow File|Blob|String'

Body 使用 fs.readFileSync(filepath)fs.createReadStream(filepath) 都不行。尝试用 ToString ,别的地方又出错。

测试了一下,在命令行中,可以正常上传,Atom里就废了。 最后定位到这里:

var getFileSize = function (api, params, callback) {
    var size;
    if (util.isBrowser) {
        if (typeof params.Body === 'string') {
            params.Body = new global.Blob([params.Body]);
        }
        if (params.Body instanceof global.File || params.Body instanceof global.Blob) {
            size = params.Body.size;
        } else {
            callback({error: 'params body format error, Only allow File|Blob|String.'});
            return;
        }
    }

请问这是 Bug 还是要用其他方式传递 Body? 其他方式的话,应该是什么呢?新手学习中,很多函数不知道, 找了快一天了,没找到能用的办法。

RuiZhuo commented 6 years ago

感觉是个bug来的,我直接在调用外部把isBrower给强制设为false,Body部分使用buffer。

tychenjiajun commented 6 years ago

tychenjiajun/qcloud-uploader#3

carsonxu commented 5 years ago

已修复@tychenjiajun