I am trying to upload an array of images using AFNetwoking. The Web service requires these kind of parameters:
action: customer create album
deviceID: jsdkgf786
AlbumName: Drive testing
UserType: Customer
UserID: 1
EventId: 2
Privacy: 1
$_FILES[‘avtar’] array of files.
I am using this code to upload my files. But somehow the response is coming fine without any errors and the files are not getting uploaded as "null" is coming when I am fetching the images.
The code is as follows.
-(void)creatNewAlbum:(NSMutableArray *)arr_images withNames:(NSMutableArray *)arr_imageNames{
// some extra work: will move it to different method
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"ddMMMyyyy_hhmmss"];
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:serverUrl]];
//[NSString stringWithFormat:@"AlbumName_%@",[formatter stringFromDate:[NSDate date]]]
NSDictionary * dicParamsToSend = @{
@"action" : customerCreateAlbum,
@"UserType" : [[UserBaseClass sharedApi].user objectForKey:@"UserType"],
@"UserID": [[UserBaseClass sharedApi].user objectForKey:@"UserID"],
@"deviceID": [AppDelegate sharedInstance].str_deviceUID,
@"Privacy": [NSString stringWithFormat:@"%ld",(long)self.int_albumType],
@"EventId": @2,
@"AlbumName": self.str_albumName
};
[SVProgressHUD show];
AFHTTPRequestOperation *op = [manager POST:@"rest.of.url" parameters:dicParamsToSend constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//do not put image inside parameters dictionary as I did, but append it!
int i = 0;
for(UIImage *eachImage in arr_images)
{
NSData *imageData = UIImageJPEGRepresentation(eachImage,1);
[formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"avtar[%d]",i ] fileName:[NSString stringWithFormat:@"%@",[arr_imageNames objectAtIndex:i]] mimeType:@"image/jpeg"];
i++;
}
NSLog(@"the data to be sent is %@", formData);
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
if ([[responseObject valueForKey:@"status"] isEqualToString:@"success"]) {
UIAlertView * alert_success = [[UIAlertView alloc] initWithTitle:@"Success" message:[responseObject valueForKey:@"message"] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert_success show];
[self firstLoad];
[SVProgressHUD dismiss];
}
else{
UIAlertView * alert_success = [[UIAlertView alloc] initWithTitle:@"Error!" message:[responseObject valueForKey:@"message"] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert_success show];
[SVProgressHUD dismiss];
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
[op setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
//[progressView setProgress: totalBytesWritten*1.0f / totalBytesExpectedToWrite animated: YES];
NSLog(@"Sent %lld of %lld bytes and progress is %f", totalBytesWritten, totalBytesExpectedToWrite, totalBytesWritten*1.0f / totalBytesExpectedToWrite);
if(totalBytesWritten >= totalBytesExpectedToWrite)
{
//progressView.hidden = YES;
}
}];
[op start];
}
Please do provide a solution as it has taken up a lot of time. Any help will be appreciated. Thanks in advance.