0

我们正在使用 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
4

0 回答 0