huaweicloud / huaweicloud-sdk-nodejs-obs

Apache License 2.0
27 stars 10 forks source link

自定义 Meta 问题 #3

Closed Lionad-Morotar closed 4 years ago

Lionad-Morotar commented 4 years ago

通过 obs.setObjectMetadata 设置对象的自定义 data,能成功,但是最终会被服务器转换为小写名称,如下:

image

我想要定义 'ContentType' 和 'ContentEncoding',但是上传之后自动转为了 'contenttype' 和 'contentencoding'。额,有什么快速解决方案吗?

Lionad-Morotar commented 4 years ago

原来中间要加短横线 '-'

obs.setObjectMetadata({
    Bucket,
    Key: '0.styles.0b1f98ca.css',
    MetadataDirective: 'REPLACE',
    Metadata: {
        'Content-Encoding': 'gzip',
        'Content-Type': 'text/html'
    }
}).then(response => {
    // console.log(response)
})

这样就搞定了...

Lionad-Morotar commented 4 years ago

不过,尽管设置了对的元数据。OBS 返回文件时并没有携带我想要的 Content-Type。见下图,控制台显示我已经设置了正确的 Content-Type,第二张图显示了浏览器请求时,返回的错误的 Content-Type

image

TIM图片20200730233542

Lionad-Morotar commented 4 years ago

如果手动在控制台设置对象的元数据,则不会出现该问题。

JMD110 commented 4 years ago

示例: https://github.com/huaweicloud/huaweicloud-sdk-nodejs-obs/blob/master/examples/object-meta-sample.js

JMD110 commented 4 years ago

ContentEncoding, ContentType是单独的参数,metaData是用户自定义的元数据参数 https://github.com/huaweicloud/huaweicloud-sdk-nodejs-obs/blob/9957cfd1c2111471489d20938690d66983c62c6f/lib/obsModel.js#L2572

Lionad-Morotar commented 4 years ago

ContentEncoding, ContentType是单独的参数,metaData是用户自定义的元数据参数 https://github.com/huaweicloud/huaweicloud-sdk-nodejs-obs/blob/9957cfd1c2111471489d20938690d66983c62c6f/lib/obsModel.js#L2572

Nice~ 晚上我试试