问题
I want too upload the image to server but got error on doing that
I have used following code but don't know whats wrong is in there
+(void) HTTPPostImage:(NSString *) stringURL andParameter:(NSData *) imageData andSelector:(SEL) selector andTarget:(id) target{
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:stringURL]];
// NSData *imageData = UIImageJPEGRepresentation(self.avatarView.image, 0.5);
NSDictionary *parameters =NULL;
NSString *myUUID = [[NSUUID UUID] UUIDString]; // create a UUID
NSLog(@"myUUID%@",myUUID);
AFHTTPRequestOperation *op = [manager POST:@"" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"public.image" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
//[formData appendPartWithFileData:imageData name:@"file" fileName:myUUID mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
[op start];
}
I don't know whats wrong in this parameter
[formData appendPartWithFileData:imageData name:@"public.image" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
For server parameter
I don't know whether i have done mistakes or server has done it
回答1:
Please try below code. Hope its work for you.
NSData *tempData = [NSData dataWithContentsOfFile:YOUR_IMAGE_FILE_PATH];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:YOUR_REQUEST_URL parameters:YOUR_PARAMETERS constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
if (tempData) {
[formData appendPartWithFileData:tempData name:@"user_image" fileName:@"avatar.jpeg" mimeType:@"image/jpeg"];
}
} success:^(AFHTTPRequestOperation *operation, id responseObject){
NSError *error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:operation.responseData
options:kNilOptions
error:&error];
NSLog(@"Registration JSON:- %@",json);
}failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"Error: %@", error);
}];
"user_image" is key parameter for a image. This key is set in API request parameter.
Thanks :)
回答2:
Add your URL last component name and change your code like this:
AFHTTPRequestOperation *op = [manager POST:@"suburl.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"userfile" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
//[formData appendPartWithFileData:imageData name:@"file" fileName:myUUID mimeType:@"image/jpeg"];
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://yourbaseurl.com/"]];
// NSData *imageData = UIImageJPEGRepresentation(self.avatarView.image, 0.5);
NSDictionary *parameters =NULL;
NSString *myUUID = [[NSUUID UUID] UUIDString]; // create a UUID
NSLog(@"myUUID%@",myUUID);
AFHTTPRequestOperation *op = [manager POST:@"suburl.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"userfile" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
//[formData appendPartWithFileData:imageData name:@"file" fileName:myUUID mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
[op start];
来源:https://stackoverflow.com/questions/33228903/uploading-image-with-afnetworking-with-null-parameter-doesnt-work