我是较新的 AFNetworking 2.0。使用下面的代码片断,我已经可以成功地将一张照片上传到个人 url。我想要跟踪的增量上载进度,但我找不到这样作 2.0 版的示例。个人应用程序是 iOS 7,因此我已经选择了为 AFHTTPSessionManager。app
任何人均可以提供如何修改这段上传进度进行跟踪的示例?url
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"myimage.jpg"], 1.0); [manager POST:@"http://myurl.com" parameters:dataToPost constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { [formData appendPartWithFileData:imageData name:@"attachment" fileName:@"myimage.jpg" mimeType:@"image/jpeg"]; } success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"Success %@", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"Failure %@, %@", error, [task.response description]); }];
接口的 AFHTTPSession
不能提供一种方法来设置进度块。相反,必须进行如下操做:code
// 1. Create `AFHTTPRequestSerializer` which will create your request. AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer]; // 2. Create an `NSMutableURLRequest`. NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"POST" URLString:@"http://www.myurl.com" parameters:dataToPost constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { [formData appendPartWithFileData:imageData name:@"attachment" fileName:@"myimage.jpg" mimeType:@"image/jpeg"]; }]; // 3. Create and use `AFHTTPRequestOperationManager` to create an `AFHTTPRequestOperation` from the `NSMutableURLRequest` that we just created. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; AFHTTPRequestOperation *operation = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Success %@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Failure %@", error.description); }]; // 4. Set the progress block of the operation. [operation setUploadProgressBlock:^(NSUInteger __unused bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { NSLog(@"Wrote %lld/%lld", totalBytesWritten, totalBytesExpectedToWrite); }]; // 5. Begin! [operation start];
此外,你不须要读取图像经过 UIImage
,而后压缩它再次使用 JPEG 得到 NSData
。只是使用 +[NSData dataWithContentsOfFile:]
,从您捆绑直接读取该文件。orm