Closed champkeh closed 5 months ago
@champkeh 当前版本可以通过配置区域满足您的需求,具体有两种实现方式
第一种,通过直接配置上传的区域。优点:实现简单。缺点:无法根据不同 bucket 选择上传域名。
const config = new qiniu.conf.Config({
useHttpsDomain: true,
regionsProvider: new qiniu.httpc.StaticRegionsProvider([
// Region ID 参考 https://developer.qiniu.com/kodo/1671/region-endpoint-fq
qiniu.httpc.Region.fromRegionId('z0')
])
})
第二种,配置为直接查询上传区域。优缺点与第一种相反。
const queryRegionsEndpoints = [qiniu.conf.QUERY_REGION_HOST]
.concat(qiniu.conf.QUERY_REGION_BACKUP_HOSTS)
.map(h => new qiniu.httpc.Endpoint(h, { defaultScheme: 'https' }))
const config = new qiniu.conf.Config({
useHttpsDomain: true,
regionsProvider: new qiniu.httpc.QueryRegionsProvider({
accessKey: your_ak,
bucketName: your_bucket,
endpointsProvider: new qiniu.httpc.StaticEndpointsProvider(queryRegionsEndpoints)
})
})
后续会看下优化支持更方便的配置缓存级别。
按照第一种方式写的时候,会报 ts 类型错误:
然后执行的时候也报 undefined 错误:
用的版本是 qiniu@7.8.0:
我目前改用前端上传的那个 qiniu-js 包来上传了(需要在 deno 环境打个 xhr 的补丁),不过不知道这两个包在上传方面有没有什么区别
@champkeh
您这边第一次反馈时,使用的是 7.11.0 版本。在 7.10.0 对区域查询引入了文件级别缓存与重构后的区域类型。
在 7.8.0 版本不应该遇到您第一次反馈的问题。如确定使用 7.8.0 请检查您的 Deno Deploy 流程,确保依赖版本与 yarn.lock 一致。
qiniu-js 与本仓库在表单上传整体区别不大。主要区别在于重试策略等细节。
哦哦谢谢,第二次我是在本地试的,应该是缓存的老版本,我再试一下新版本
用7.11.0版本可以了,非常感谢!
不过稍微有点小瑕疵,就是 ts 类型会报这样一个警告:
不知道是deno的问题还是这个库的问题,不过不影响使用
@champkeh 不要意思,手残了。请去掉 new。
上传操作部分代码如下:
可能是由于Deno Deploy环境无法向系统写入临时文件,所以出现上面的报错信息。
请问有没有在无写入权限的服务器环境执行上传操作呢?