问题描述
我的项目所做的是使用自定义相机拍摄照片并将其添加到NSMutableArray。然后,我获取这些图像并将其提交给接受图像的API。我已经尝试了在StackOverflow上找到的几乎所有解决方案,但没有一个对我有用。我使用了AFNetworking甚至是NSURLRequests的Multipart Request。
实际上有两种解决方案提交给我的API,但是文件显示为*******。amazonaws.com/2020/10/21/090522h。它不会在图片上添加扩展名,因此当我尝试将该图片重新显示在我的应用程序上时,图片就坏了。
View that Displays Image Array after Images are taken with Camera
当我使用AFNetworking解决方案按Submit后,此消息将返回,但是图像损坏。
2020-10-21 10:40:57.715622-0500 WFM App[24455:5876263] Response: {length = 8,bytes = 0x2053554343455353}
2020-10-21 10:40:57.716223-0500 WFM App[24455:5876263] SUCCESS
这是使用 AFNetworking 的人:
NSURL *URL = [NSURL URLWithString:url];
NSData *imageData= UIImageJPEGRepresentation(transporterImagesArray[0],0.7);
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
[manager POST:URL.absoluteString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData
name:@"fileToUpload"
fileName:@"image.jpg" mimeType:@"image/jpeg"];
// etc.
} progress:nil success:^(NSURLSessionDataTask *task,id responseObject) {
NSLog(@"Response: %@",responseObject);
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@",string);
} failure:^(NSURLSessionDataTask *task,NSError *error) {
NSLog(@"Error: %@",error);
}];
以下是与 NSURLRequests 一起使用的
: NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
NSData *imageData = UIImageJPEGRepresentation(transporterImagesArray[0],0.7);
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:60];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"unique-consistent-string";
// set Content-Type in HTTP header
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];
// post body
NSMutableData *body = [NSMutableData data];
// add params (all params are strings)
[body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=fileToUpload\r\n\r\n",@"imageCaption"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@\r\n",@"Some Caption"] dataUsingEncoding:NSUTF8StringEncoding]];
// add image data
if (imageData) {
[body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=fileToUpload;"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the request
[request setHTTPBody:body];
// set the content-length
NSString *postLength = [NSString stringWithFormat:@"%d",[body length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response,NSData *data,NSError *error) {
if(data.length > 0)
{
NSLog(@"Success uploading Image!");
picturesDisplayViewController *home = [self.storyboard instantiateViewControllerWithIdentifier:@"tabBarController"];
[self.navigationController pushViewController:home animated:YES];
}
}];
我希望获得一些帮助或建议,我已经坚持了整整一天,我需要继续前进。谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)