2012-03-04 70 views
0

我必须上传通过相机拍摄的图像或通过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浏览器上)。教程或示例代码

回答

2

为了得到答案一号问题,请采取下面的代码片段一看:

#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

谢谢你的回复。 'UIImageJPEGRepresentation(originalImage,0.7)'中的'0.7'是什么?我在我的代码中使用ARC。你知道相应的PHP代码,我可以测试它是否工作? – Illep 2012-03-04 15:18:45

+0

没问题。您可以检查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

+0

为什么添加'#import '?哪种方法使用它? – Illep 2012-03-04 15:35:00