Skip to content

Commit 172914d

Browse files
committed
fix resume upload key problem
add form upload test case add resume upload test case add gzip for rpc request
1 parent 1f20271 commit 172914d

File tree

5 files changed

+125
-17
lines changed

5 files changed

+125
-17
lines changed

examples/resume_upload_simple.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ putExtra.params = {
2121
"x:name": "",
2222
"x:age": 27,
2323
}
24+
putExtra.fname = 'testfile.mp4';
2425

2526
//file
2627
resumeUploader.putFile(uploadToken, null, localFile, putExtra, function(respErr,

qiniu/io/resume.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ function putReq(config, uploadToken, key, rsStream, rsStreamLen, putExtra,
119119
// block upload
120120

121121
var fileSize = rsStreamLen;
122-
console.log("file size:" + fileSize);
122+
//console.log("file size:" + fileSize);
123123
var blockCnt = fileSize / conf.BLOCK_SIZE
124124
var totalBlockNum = (fileSize % conf.BLOCK_SIZE == 0) ? blockCnt : (blockCnt +
125125
1);
@@ -153,7 +153,7 @@ function putReq(config, uploadToken, key, rsStream, rsStreamLen, putExtra,
153153
readBuffers.push(chunk);
154154

155155
if (readLen % conf.BLOCK_SIZE == 0 || readLen == fileSize) {
156-
console.log(readLen);
156+
//console.log(readLen);
157157
var readData = Buffer.concat(readBuffers);
158158
readBuffers = []; //reset read buffer
159159
curBlock += 1; //set current block
@@ -181,14 +181,14 @@ function putReq(config, uploadToken, key, rsStream, rsStreamLen, putExtra,
181181

182182
//check when to mkfile
183183
rsStream.on('end', function() {
184-
console.log("end");
184+
//console.log("end");
185185
mkfileReq(upDomain, uploadToken, fileSize, finishedCtxList, key,
186186
putExtra, callbackFunc);
187187
});
188188
}
189189

190190
function mkblkReq(upDomain, uploadToken, blkData, callbackFunc) {
191-
console.log("mkblk");
191+
//console.log("mkblk");
192192
var requestURI = upDomain + "/mkblk/" + blkData.length;
193193
var auth = 'UpToken ' + uploadToken;
194194
var headers = {
@@ -200,8 +200,11 @@ function mkblkReq(upDomain, uploadToken, blkData, callbackFunc) {
200200

201201
function mkfileReq(upDomain, uploadToken, fileSize, ctxList, key, putExtra,
202202
callbackFunc) {
203-
console.log("mkfile");
203+
//console.log("mkfile");
204204
var requestURI = upDomain + "/mkfile/" + fileSize;
205+
if (key) {
206+
requestURI += "/key/" + util.urlsafeBase64Encode(key);
207+
}
205208
if (putExtra.mimeType) {
206209
requestURI += "/mimeType/" + util.urlsafeBase64Encode(putExtra.mimeType);
207210
}

qiniu/rpc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ function post(requestURI, requestForm, headers, callbackFunc) {
3535
//var start = parseInt(Date.now() / 1000);
3636
headers = headers || {};
3737
headers['User-Agent'] = headers['User-Agent'] || conf.USER_AGENT;
38-
headers['Accept-Encoding'] = 'gzip';
3938
headers['Connection'] = 'keep-alive';
4039

4140
var data = {
4241
headers: headers,
4342
method: 'POST',
4443
dataType: 'json',
4544
timeout: conf.RPC_TIMEOUT,
45+
gzip: true,
4646
// timing: true,
4747
};
4848

test/io.test.js renamed to test/form_io.test.js

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ describe('test form io', function() {
6868
//console.log(respBody);
6969
should.not.exist(respErr);
7070
respBody.should.have.keys('key', 'hash');
71-
keysToDelete.push(respBody.key);
71+
if (!keysToDelete.includes(respBody.key)) {
72+
keysToDelete.push(respBody.key);
73+
}
7274
done();
7375
});
7476
});
@@ -84,7 +86,9 @@ describe('test form io', function() {
8486
//console.log(respBody);
8587
should.not.exist(respErr);
8688
respBody.should.have.keys('key', 'hash');
87-
keysToDelete.push(respBody.key);
89+
if (!keysToDelete.includes(respBody.key)) {
90+
keysToDelete.push(respBody.key);
91+
}
8892
done();
8993
});
9094
});
@@ -99,22 +103,26 @@ describe('test form io', function() {
99103
//console.log(respBody);
100104
should.not.exist(respErr);
101105
respBody.should.have.keys('key', 'hash');
102-
keysToDelete.push(respBody.key);
106+
if (!keysToDelete.includes(respBody.key)) {
107+
keysToDelete.push(respBody.key);
108+
}
103109
done();
104110
});
105111
});
106112
});
107113

108114
describe('test form io#putWithoutKey', function() {
109115
it('test form io#putWithoutKey', function(done) {
110-
var key = null;
111-
formUploader.put(uploadToken, key, "hello world", putExtra,
116+
formUploader.putWithoutKey(uploadToken, "hello world",
117+
putExtra,
112118
function(respErr,
113119
respBody, respInfo) {
114120
//console.log(respBody);
115121
should.not.exist(respErr);
116122
respBody.should.have.keys('key', 'hash');
117-
keysToDelete.push(respBody.key);
123+
if (!keysToDelete.includes(respBody.key)) {
124+
keysToDelete.push(respBody.key);
125+
}
118126
done();
119127
});
120128
});
@@ -123,30 +131,34 @@ describe('test form io', function() {
123131
describe('test form io#putFile', function() {
124132
it('test form io#putFile', function(done) {
125133
var key = 'io_putFile_test' + Math.random(1000);
126-
formUploader.put(uploadToken, key, imageFile, putExtra,
134+
formUploader.putFile(uploadToken, key, imageFile, putExtra,
127135
function(
128136
respErr,
129137
respBody, respInfo) {
130138
//console.log(respBody);
131139
should.not.exist(respErr);
132140
respBody.should.have.keys('key', 'hash');
133-
keysToDelete.push(respBody.key);
141+
if (!keysToDelete.includes(respBody.key)) {
142+
keysToDelete.push(respBody.key);
143+
}
134144
done();
135145
});
136146
});
137147
});
138148

139149
describe('test form io#putFileWithoutKey', function() {
140150
it('test form io#putFileWithoutKey', function(done) {
141-
var key = null;
142-
formUploader.put(uploadToken, key, imageFile, putExtra,
151+
formUploader.putFileWithoutKey(uploadToken, imageFile,
152+
putExtra,
143153
function(
144154
respErr,
145155
respBody, respInfo) {
146156
//console.log(respBody);
147157
should.not.exist(respErr);
148158
respBody.should.have.keys('key', 'hash');
149-
keysToDelete.push(respBody.key);
159+
if (!keysToDelete.includes(respBody.key)) {
160+
keysToDelete.push(respBody.key);
161+
}
150162
done();
151163
});
152164
});

test/resume_io.test.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
const path = require('path');
2+
const should = require('should');
3+
const assert = require('assert');
4+
const qiniu = require("../index.js");
5+
const proc = require("process");
6+
const fs = require("fs");
7+
8+
before(function(done) {
9+
if (!process.env.QINIU_ACCESS_KEY || !process.env.QINIU_SECRET_KEY || !
10+
process.env.QINIU_TEST_BUCKET || !process.env.QINIU_TEST_DOMAIN) {
11+
console.log('should run command `source test-env.sh` first\n');
12+
process.exit(0);
13+
}
14+
done();
15+
});
16+
17+
18+
//file to upload
19+
var imageFile = path.join(__dirname, 'logo.png');
20+
21+
describe('test resume io', function() {
22+
var accessKey = proc.env.QINIU_ACCESS_KEY;
23+
var secretKey = proc.env.QINIU_SECRET_KEY;
24+
var bucket = proc.env.QINIU_TEST_BUCKET;
25+
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
26+
var config = new qiniu.conf.Config();
27+
//config.useHttpsDomain = true;
28+
config.zone = qiniu.zone.Zone_z0;
29+
var bucketManager = new qiniu.rs.BucketManager(mac, config);
30+
31+
//delete all the files uploaded
32+
var keysToDelete = [];
33+
34+
after(function(done) {
35+
var deleteOps = [];
36+
keysToDelete.forEach(function(key) {
37+
deleteOps.push(qiniu.rs.deleteOp(bucket, key));
38+
});
39+
40+
bucketManager.batch(deleteOps, function(respErr, respBody, respInfo) {
41+
//console.log(respBody);
42+
respBody.forEach(function(ret) {
43+
ret.should.eql({
44+
code: 200
45+
});
46+
});
47+
done();
48+
});
49+
});
50+
51+
var options = {
52+
scope: bucket,
53+
}
54+
var putPolicy = new qiniu.rs.PutPolicy(options);
55+
var uploadToken = putPolicy.uploadToken(mac);
56+
var config = new qiniu.conf.Config();
57+
config.zone = qiniu.zone.Zone_z0;
58+
var resumeUploader = new qiniu.resume_io.ResumeUploader(config);
59+
var putExtra = new qiniu.form_io.PutExtra();
60+
61+
describe('test resume io#putFileWithoutKey', function() {
62+
it('test resume io#putFileWithoutKey', function(done) {
63+
resumeUploader.putFileWithoutKey(uploadToken, imageFile,
64+
putExtra,
65+
function(
66+
respErr,
67+
respBody, respInfo) {
68+
//console.log(respBody);
69+
should.not.exist(respErr);
70+
respBody.should.have.keys('key', 'hash');
71+
keysToDelete.push(respBody.key);
72+
done();
73+
});
74+
});
75+
});
76+
77+
describe('test resume io#putFile', function() {
78+
it('test resume io#putFile', function(done) {
79+
var key = 'io_putFile_test' + Math.random(1000);
80+
resumeUploader.putFile(uploadToken, key, imageFile, putExtra,
81+
function(
82+
respErr,
83+
respBody, respInfo) {
84+
//console.log(respBody);
85+
should.not.exist(respErr);
86+
respBody.should.have.keys('key', 'hash');
87+
keysToDelete.push(respBody.key);
88+
done();
89+
});
90+
});
91+
});
92+
});

0 commit comments

Comments
 (0)