mirror of
https://github.com/apache/cordova-plugin-file-transfer.git
synced 2024-10-06 07:42:20 +08:00
CB-12154 file-transfer progressEvent.total = -1 on iOS
Makes chunkedMode=true uploads to contain Content-Length to make progress computable
This commit is contained in:
parent
655489905a
commit
5a711e8722
@ -229,6 +229,8 @@ static CFIndex WriteDataToStream(NSData* data, CFWriteStreamRef stream)
|
||||
totalPayloadLength += [postBodyBeforeFile length] + [postBodyAfterFile length];
|
||||
}
|
||||
|
||||
[req setValue:[[NSNumber numberWithLongLong:totalPayloadLength] stringValue] forHTTPHeaderField:@"Content-Length"];
|
||||
|
||||
if (chunkedMode) {
|
||||
CFReadStreamRef readStream = NULL;
|
||||
CFWriteStreamRef writeStream = NULL;
|
||||
@ -266,7 +268,6 @@ static CFIndex WriteDataToStream(NSData* data, CFWriteStreamRef stream)
|
||||
CFRelease(writeStream);
|
||||
}];
|
||||
} else {
|
||||
[req setValue:[[NSNumber numberWithLongLong:totalPayloadLength] stringValue] forHTTPHeaderField:@"Content-Length"];
|
||||
if (multipartFormUpload) {
|
||||
[postBodyBeforeFile appendData:fileData];
|
||||
[postBodyBeforeFile appendData:postBodyAfterFile];
|
||||
@ -814,7 +815,7 @@ static CFIndex WriteDataToStream(NSData* data, CFWriteStreamRef stream)
|
||||
if (self.direction == CDV_TRANSFER_UPLOAD) {
|
||||
NSMutableDictionary* uploadProgress = [NSMutableDictionary dictionaryWithCapacity:3];
|
||||
|
||||
[uploadProgress setObject:[NSNumber numberWithBool:(!self.chunkedMode)] forKey:@"lengthComputable"];
|
||||
[uploadProgress setObject:[NSNumber numberWithBool:true] forKey:@"lengthComputable"];
|
||||
[uploadProgress setObject:[NSNumber numberWithLongLong:totalBytesWritten] forKey:@"loaded"];
|
||||
[uploadProgress setObject:[NSNumber numberWithLongLong:totalBytesExpectedToWrite] forKey:@"total"];
|
||||
CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:uploadProgress];
|
||||
|
@ -1506,7 +1506,9 @@ exports.defineAutoTests = function () {
|
||||
obj = JSON.parse(uploadResult.response);
|
||||
|
||||
if (specContext.uploadOptions.chunkedMode) {
|
||||
expect(obj["content-length"]).not.toBeDefined("Expected Content-Length not to be defined");
|
||||
if (!isIos) {
|
||||
expect(obj["content-length"]).not.toBeDefined("Expected Content-Length not to be defined");
|
||||
}
|
||||
expect(obj["transfer-encoding"].toLowerCase()).toEqual("chunked");
|
||||
} else {
|
||||
expect(obj["content-length"]).toBeDefined("Expected Content-Length to be defined");
|
||||
|
Loading…
Reference in New Issue
Block a user