我正在创建的应用程序以四种方式上传图像(第四种是测试功能);
1.直接从 UIImagePickerController 与 UIImagePickerControllerSourceTypeCamera 像这样:
//didFinishPickingImage method
if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera)
{
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
}
CGRect myImageRect = CGRectMake(30.0f, 190.0f, 250.0f, 210.0f);
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
//released in dealloc because I reuse it alot
myImage.image = img;
[self.view addSubview:myImage];
2.直接从照片库中挑选也使用
myImage.image = img;
3.使用从1保存的图像。
pathFile = @"/private/var/mobile/Media/DCIM/100APPLE/";
NSString *ImagePath = [pathFile stringByAppendingString:imageFileName];
NSData *imageDataFile = [NSData dataWithContentsOfFile:ImagePath];
UIImage *img = [UIImage imageWithContentsOfFile:ImagePath];
myImage.image = img;
4.作为测试功能:使用iPhone默认相机应用程序拍摄的图像(与UIImagePickerController相同)但使用ImagePath而不是UIImagepickerController,UIImagePickerControllerSourceTypePhotoLibrary。
//Same as Number 3.
pathFile = @"/private/var/mobile/Media/DCIM/100APPLE/";
NSString *ImagePath = [pathFile stringByAppendingString:imageFileName];
NSData *imageDataFile = [NSData dataWithContentsOfFile:ImagePath];
UIImage *img = [UIImage imageWithContentsOfFile:ImagePath];
myImage.image = img;
*至此,用户可以在添加到 UIImageView 的 myImage 实例的屏幕上以四种方式中的任何一种方式查看文件(取决于用户选择)。这证明我选择了正确的文件(三个和四个)。
//uploading function
NSData *imageData = UIImageJPEGRepresentation(myImage.image, 1.0);
NSMutableURLRequest *request2 = [[[NSMutableURLRequest alloc] init] autorelease];
[request2 setURL:[NSURL URLWithString:urlString]];
[request2 setHTTPMethod:@"POST"];
NSMutableData *body = [NSMutableData data];
//... append boundary, content-disposition code etc here.
[body appendData:[NSData dataWithData:imageData]];
[request setHTTPBody:body];
问题是,在上传时,数字 1,2 和 4 有效,数字 3 无效。
控制台输出;程序接收信号:“EXC_BAD_ACCESS”
我知道此输出源于尝试访问已释放对象,并且我在其他情况下遇到并解决了此问题。但是即使在检查了我的内存分配之后,也没有找到办法。
我真的很感激解决这个问题的方法。