我们正在使用AFNetworking进行上传请求,但问题是上传请求所需的令牌寿命很短(2小时)。 当上传1GB或更大容量的大文件时,当请求到达服务器时,令牌已过期且请求失败。 无论如何,在AFNetworking中,我们可以打开与服务器的连接(进行身份验证),然后开始流式传输文件,就像接收文件时下载任务会发生什么一样?
我尝试使用所有不同类型的appendPartWith appendPartWithFileURL appendPartWithInputStream appendPartWithFileData
从网络角度来看,它们都具有相同的行为
{
....
NSString *sessionKey = token;
NSString *sha256 = [NSInputStream inputStreamWithURL:fileURL].sha256;
NSString *mimeType = @"application/octet-stream"
unsigned long long filesize = fileSize;
NSTimeInterval timeout = MAX(filesize * 1. / 500000., 30.);
....
request = [self.manager.requestSerializer
multipartFormRequestWithMethod:@"POST"
URLString:URLString
parameters:parameters
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileURL:fileURL
name:@"fileData"
fileName:[fileName urlEncode]
mimeType:mimeType
error:nil];
[formData appendPartWithFormData:[sessionKey dataUsingEncoding:NSUTF8StringEncoding]
name:@"sessionKey"];
}
error:nil];
}
request.timeoutInterval = timeout;
}
return request;
}
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromFile:(NSURL *)fileURL
progress:(void (^)(NSProgress *uploadProgress)) uploadProgressBlock
completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler