将图像上传到网络服务 - 初学者
问题描述:
我必须上传通过相机拍摄的图像或通过uiimagepickerview
上传。我正在使用ASIHTTPRequest。将图像上传到网络服务 - 初学者
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
1)因为我是把照片从iPhone相机或从uiimagepickerview
上传,我需要知道我应该设置什么样的价值为setFile
(更换文本@"/Users/ben/Desktop/ben.jpg"
)?
2.)我也需要测试这个应用程序,所以没有人知道相应的PHP代码,我可以显示所拍摄的图像(在Web浏览器上)。教程或示例代码
答
为了得到答案一号问题,请采取下面的代码片段一看:
#import <MobileCoreServices/MobileCoreServices.h>
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
BOOL isImage = ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:kUTTypeImage]);
if (isImage) {
self.request = [ASIFormDataRequest requestWithURL:url];
UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];
NSData *imageData = UIImageJPEGRepresentation(originalImage, 0.7);
[self.request setData:imageData
withFileName:@"photo.jpg"
andContentType:@"image/jpeg"
forKey:@"photo"];
[self.request start];
}
}
请考虑增加财产到您的UIImagePiclerController委托类
@property(nonatomic, retain) ASIFormDataRequest *request;
它将允许你停止请求或至少把它委托给零,如果你的对象被释放,通过简单地实施
- (void) dealloc {
[self.request cancel];
self.request.delegate = nil;
[request release];
[super dealloc];
}
答
您应该将图像添加到请求主体作为图像数据。
+0
会有什么相应的PHP代码来测试这个? – Illep 2012-03-04 14:48:20
谢谢你的回复。 'UIImageJPEGRepresentation(originalImage,0.7)'中的'0.7'是什么?我在我的代码中使用ARC。你知道相应的PHP代码,我可以测试它是否工作? – Illep 2012-03-04 15:18:45
没问题。您可以检查0.7是JPEG压缩质量。该参数值范围是[0.0; 1.0]。根据[Apple文档](https://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/doc/uid/TP40006894-CH3-SW9), “值0.0表示最大压缩(或最低质量),而值1.0表示最低压缩(或最佳质量)。”你明白要使用PHP,你必须使用PHP模块等来设置Web服务器。我认为使用自己的API托管一些图像会更好。 – 2012-03-04 15:33:19
为什么添加'#import'?哪种方法使用它? –
Illep
2012-03-04 15:35:00