Skip to content

Commit d02315c

Browse files
authored
Merge pull request #691 from qiniu/master
v3.4.3
2 parents 2ad103c + a98e9b8 commit d02315c

File tree

11 files changed

+64
-65
lines changed

11 files changed

+64
-65
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ qiniu.compressImage(file, options).then(data => {
224224
* config.region: 选择上传域名区域;当为 `null``undefined` 时,自动分析上传域名区域,当指定了 `uphost` 时,此设置项无效。
225225
* config.retryCount: 上传自动重试次数(整体重试次数,而不是某个分片的重试次数);默认 3 次(即上传失败后最多重试两次)。
226226
* config.concurrentRequestLimit: 分片上传的并发请求量,`number`,默认为3;因为浏览器本身也会限制最大并发量,所以最大并发量与浏览器有关。
227-
* config.checkByServer: 是否开启服务端文件签名校验,为布尔值;开启后在文件上传时会计算本地的文件签名,服务端会根据本地的签名与接收到的数据的签名进行比对,如果不相同、则说明文件可能存在问题,此时会返回错误(`code`: 406),默认为 `false`,不开启。
227+
* config.checkByServer: 是否开启服务端文件签名校验,为布尔值;开启后在文件上传时会计算本地的文件签名,服务端会根据本地的签名与接收到的数据的签名进行比对,如果不相同、则说明文件可能存在问题,此时会返回错误(`code`: 406),默认为 `true`,不开启。
228228
* config.checkByMD5: 是否开启 `MD5` 校验,为布尔值;在断点续传时,开启 `MD5` 校验会将已上传的分片与当前分片进行 `MD5` 值比对,若不一致,则重传该分片,避免使用错误的分片。读取分片内容并计算 `MD5` 需要花费一定的时间,因此会稍微增加断点续传时的耗时,默认为 `false`,不开启。
229229
* config.forceDirect: 是否上传全部采用直传方式,为布尔值;为 `true` 时则上传方式全部为直传 form 方式,禁用断点续传,默认 `false`
230230
* config.chunkSize: `number`,分片上传时每片的大小,必须为正整数,单位为 `MB`,且最大不能超过 1024,默认值 4。因为 chunk 数最大 10000,所以如果文件以你所设的 `chunkSize` 进行分片并且 chunk 数超过 10000,我们会把你所设的 `chunkSize` 扩大二倍,如果仍不符合则继续扩大,直到符合条件。

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "qiniu-js",
33
"jsName": "qiniu",
4-
"version": "3.4.2",
4+
"version": "3.4.3",
55
"private": false,
66
"description": "Javascript SDK for Qiniu Resource (Cloud) Storage AP",
77
"main": "lib/index.js",

site/.eslintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"root": true,
23
"extends": [
34
"@qiniu"
45
]

site/package.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@
44
"version": "1.0.0",
55
"main": "index.js",
66
"scripts": {
7-
"dev": "webpack serve --mode development --inline --hot --open",
8-
"start": "webpack serve --mode development",
9-
"build": "webpack --mode development",
7+
"dev": "NODE_OPTIONS=--openssl-legacy-provider webpack serve --mode development --inline --hot --open",
8+
"start": "NODE_OPTIONS=--openssl-legacy-provider webpack serve --mode development",
9+
"build": "NODE_OPTIONS=--openssl-legacy-provider webpack --mode development",
1010
"lint": "eslint --ext .tsx,.ts src/"
1111
},
1212
"license": "MIT",
1313
"devDependencies": {
1414
"@qiniu/eslint-config": "0.0.6-beta.7",
15-
"@types/create-hmac": "^1.1.0",
16-
"@types/react": "^17.0.5",
17-
"@types/react-dom": "^17.0.5",
15+
"@types/create-hmac": "^1.1.3",
16+
"@types/react": "^18.3.0",
17+
"@types/react-dom": "^18.3.0",
1818
"@typescript-eslint/eslint-plugin": "~4.10.0",
19+
"buffer": "^6.0.3",
1920
"css-loader": "^5.2.4",
2021
"esbuild-loader": "^2.13.1",
2122
"eslint": "~7.2.0",
@@ -29,21 +30,20 @@
2930
"html-webpack-plugin": "^5.3.1",
3031
"less": "^4.1.1",
3132
"less-loader": "^9.0.0",
33+
"stream-browserify": "^3.0.0",
3234
"style-loader": "^2.0.0",
3335
"typescript": "4.1.5",
3436
"url-loader": "^4.1.1",
3537
"webpack": "^5.37.0",
3638
"webpack-cli": "^4.7.0",
3739
"webpack-dev-server": "^3.11.2",
38-
"webpackbar": "^5.0.0-3",
39-
"buffer": "^6.0.3",
40-
"stream-browserify": "^3.0.0"
40+
"webpackbar": "^5.0.0-3"
4141
},
4242
"dependencies": {
4343
"byte-size": "^7.0.1",
4444
"create-hmac": "^1.1.7",
4545
"js-base64": "^3.7.2",
46-
"react": "^17.0.2",
47-
"react-dom": "^17.0.2"
46+
"react": "^18.3.1",
47+
"react-dom": "^18.3.1"
4848
}
4949
}

site/src/components/Queue/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as React from 'react'
2+
23
import type { UniqueFile } from '../SelectFile'
34

45
import { Item } from './item'

site/src/components/Settings/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as React from 'react'
2+
23
import * as utils from '../../utils'
34

45
import { Input } from '../Input'
@@ -8,7 +9,6 @@ interface IProps { }
89

910
export function Settings(props: IProps) {
1011
const setting = React.useMemo(() => utils.loadSetting(), [])
11-
1212
const [deadline, setDeadline] = React.useState<number>(0)
1313
const [uphost, seUphost] = React.useState<string>(setting.uphost || '')
1414
const [assessKey, setAssessKey] = React.useState<string>(setting.assessKey || '')
@@ -25,11 +25,11 @@ export function Settings(props: IProps) {
2525
})
2626
}, [assessKey, secretKey, bucketName, deadline, uphost])
2727

28-
React.useEffect(()=> {
28+
React.useEffect(() => {
2929
if (deadline > 0) return
3030
// 基于当前时间加上 3600s
3131
setDeadline(Math.floor(Date.now() / 1000) + 3600)
32-
},[deadline])
32+
}, [deadline])
3333

3434
return (
3535
<div className={classnames.settings}>

site/src/upload.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,19 @@ export function useUpload(file: File) {
6767
// 获取 token
6868
React.useEffect(() => {
6969
const { assessKey, secretKey, bucketName, deadline } = loadSetting()
70-
if (!assessKey || !secretKey || !bucketName || !deadline) {
70+
if (token == null && (!assessKey || !secretKey || !bucketName || !deadline)) {
7171
setError(new Error('请点开设置并输入必要的配置信息'))
7272
return
7373
}
7474

7575
// 线上应该使用服务端生成 token
76-
setToken(generateUploadToken({ assessKey, secretKey, bucketName, deadline }))
77-
}, [file])
76+
if (token != null) return
77+
78+
// 确保所有必需的参数都存在后再调用 generateUploadToken
79+
if (assessKey && secretKey && bucketName && deadline) {
80+
setToken(generateUploadToken({ assessKey, secretKey, bucketName, deadline }))
81+
}
82+
}, [file, token])
7883

7984
// 创建上传任务
8085
React.useEffect(() => {
@@ -90,11 +95,14 @@ export function useUpload(file: File) {
9095
metadata: {
9196
'x-qn-meta-test': 'tt',
9297
'x-qn-meta-test1': '222',
93-
'x-qn-meta-test2': '333',
98+
'x-qn-meta-test2': '333'
9499
}
95100
},
96101
{
97-
checkByMD5: true,
102+
// checkByMD5: true,
103+
checkByServer: true,
104+
chunkSize: 2,
105+
concurrentRequestLimit: 3,
98106
debugLogLevel: 'INFO',
99107
uphost: uphost && uphost.split(',')
100108
}

site/yarn.lock

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@
7272
"@typescript-eslint/parser" "~4.10.0"
7373
eslint-config-airbnb "~18.2.0"
7474

75-
"@types/create-hmac@^1.1.0":
76-
version "1.1.0"
77-
resolved "https://registry.yarnpkg.com/@types/create-hmac/-/create-hmac-1.1.0.tgz#d5bc34b65aeaf8f7bbd4a064172ab48318763b63"
78-
integrity sha512-BNYNdzdhOZZQWCOpwvIll3FSvgo3e55Y2M6s/jOY6TuOCwqt3cLmQsK4tSmJ5fayDot8EG4k3+hcZagfww9JlQ==
75+
"@types/create-hmac@^1.1.3":
76+
version "1.1.3"
77+
resolved "https://mirrors.cloud.tencent.com/npm/@types/create-hmac/-/create-hmac-1.1.3.tgz#fba2fe41fb98d37b76da2ca5a7158dc7408727dc"
78+
integrity sha512-oDDSoBrAfdEPQuBpQp14y/ygUVU1IC6gq8Arm8IPP8TRC11AnLLYmpE3VvNUhPK/Ax3USGDjdE1Sc1LCIpf0NQ==
7979
dependencies:
8080
"@types/node" "*"
8181

@@ -138,27 +138,19 @@
138138
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
139139
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
140140

141-
"@types/react-dom@^17.0.5":
142-
version "17.0.5"
143-
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.5.tgz#df44eed5b8d9e0b13bb0cd38e0ea6572a1231227"
144-
integrity sha512-ikqukEhH4H9gr4iJCmQVNzTB307kROe3XFfHAOTxOXPOw7lAoEXnM5KWTkzeANGL5Ce6ABfiMl/zJBYNi7ObmQ==
145-
dependencies:
146-
"@types/react" "*"
141+
"@types/react-dom@^18.3.0":
142+
version "18.3.7"
143+
resolved "https://mirrors.cloud.tencent.com/npm/@types/react-dom/-/react-dom-18.3.7.tgz#b89ddf2cd83b4feafcc4e2ea41afdfb95a0d194f"
144+
integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==
147145

148-
"@types/react@*", "@types/react@^17.0.5":
149-
version "17.0.5"
150-
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.5.tgz#3d887570c4489011f75a3fc8f965bf87d09a1bea"
151-
integrity sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw==
146+
"@types/react@^18.3.0":
147+
version "18.3.23"
148+
resolved "https://mirrors.cloud.tencent.com/npm/@types/react/-/react-18.3.23.tgz#86ae6f6b95a48c418fecdaccc8069e0fbb63696a"
149+
integrity sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==
152150
dependencies:
153151
"@types/prop-types" "*"
154-
"@types/scheduler" "*"
155152
csstype "^3.0.2"
156153

157-
"@types/scheduler@*":
158-
version "0.16.1"
159-
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
160-
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
161-
162154
"@typescript-eslint/eslint-plugin@~4.10.0":
163155
version "4.10.0"
164156
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.10.0.tgz#19ed3baf4bc4232c5a7fcd32eaca75c3a5baf9f3"
@@ -3839,27 +3831,25 @@ [email protected]:
38393831
iconv-lite "0.4.24"
38403832
unpipe "1.0.0"
38413833

3842-
react-dom@^17.0.2:
3843-
version "17.0.2"
3844-
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
3845-
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
3834+
react-dom@^18.3.1:
3835+
version "18.3.1"
3836+
resolved "https://mirrors.cloud.tencent.com/npm/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
3837+
integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
38463838
dependencies:
38473839
loose-envify "^1.1.0"
3848-
object-assign "^4.1.1"
3849-
scheduler "^0.20.2"
3840+
scheduler "^0.23.2"
38503841

38513842
react-is@^16.8.1:
38523843
version "16.13.1"
38533844
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
38543845
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
38553846

3856-
react@^17.0.2:
3857-
version "17.0.2"
3858-
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
3859-
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
3847+
react@^18.3.1:
3848+
version "18.3.1"
3849+
resolved "https://mirrors.cloud.tencent.com/npm/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
3850+
integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
38603851
dependencies:
38613852
loose-envify "^1.1.0"
3862-
object-assign "^4.1.1"
38633853

38643854
read-pkg-up@^2.0.0:
38653855
version "2.0.0"
@@ -4121,13 +4111,12 @@ sax@^1.2.4:
41214111
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
41224112
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
41234113

4124-
scheduler@^0.20.2:
4125-
version "0.20.2"
4126-
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
4127-
integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
4114+
scheduler@^0.23.2:
4115+
version "0.23.2"
4116+
resolved "https://mirrors.cloud.tencent.com/npm/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
4117+
integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
41284118
dependencies:
41294119
loose-envify "^1.1.0"
4130-
object-assign "^4.1.1"
41314120

41324121
schema-utils@^1.0.0:
41334122
version "1.0.0"

src/upload/base.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const DEFAULT_CHUNK_SIZE = 4 // 单位 MB
99

1010
// code 信息地址 https://developer.qiniu.com/kodo/3928/error-responses
1111
export const FREEZE_CODE_LIST = [0, 502, 503, 504, 599] // 将会冻结当前 host 的 code
12-
export const RETRY_CODE_LIST = [...FREEZE_CODE_LIST, 612] // 会进行重试的 code
12+
export const RETRY_CODE_LIST = [...FREEZE_CODE_LIST, 406] // 会进行重试的 code
1313

1414
/** 上传文件的资源信息配置 */
1515
export interface Extra {

src/utils/config.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ describe('test config ', () => {
99
uphost: [],
1010
retryCount: 3,
1111
checkByMD5: false,
12-
checkByServer: false,
12+
checkByServer: true,
1313
forceDirect: false,
1414
useCdnDomain: true,
1515
concurrentRequestLimit: 3,
@@ -24,7 +24,7 @@ describe('test config ', () => {
2424
uphost: [],
2525
retryCount: 3,
2626
checkByMD5: false,
27-
checkByServer: false,
27+
checkByServer: true,
2828
forceDirect: false,
2929
useCdnDomain: true,
3030
concurrentRequestLimit: 3,
@@ -40,7 +40,7 @@ describe('test config ', () => {
4040
uphost: regionUphostMap[region.z0].cdnUphost,
4141
retryCount: 3,
4242
checkByMD5: false,
43-
checkByServer: false,
43+
checkByServer: true,
4444
forceDirect: false,
4545
useCdnDomain: true,
4646
concurrentRequestLimit: 3,
@@ -55,7 +55,7 @@ describe('test config ', () => {
5555
uphost: ['test'],
5656
retryCount: 3,
5757
checkByMD5: false,
58-
checkByServer: false,
58+
checkByServer: true,
5959
forceDirect: false,
6060
useCdnDomain: true,
6161
concurrentRequestLimit: 3,
@@ -71,7 +71,7 @@ describe('test config ', () => {
7171
uphost: ['test'],
7272
retryCount: 3,
7373
checkByMD5: false,
74-
checkByServer: false,
74+
checkByServer: true,
7575
forceDirect: false,
7676
useCdnDomain: true,
7777
concurrentRequestLimit: 3,
@@ -87,7 +87,7 @@ describe('test config ', () => {
8787
uphost: regionUphostMap[region.z0].srcUphost,
8888
retryCount: 3,
8989
checkByMD5: false,
90-
checkByServer: false,
90+
checkByServer: true,
9191
forceDirect: false,
9292
useCdnDomain: false,
9393
concurrentRequestLimit: 3,

0 commit comments

Comments
 (0)