1

我是 XCode 和 Objective-C 的新手,我按照http://www.techotopia.com/index.php/An_Example_iOS_4_iPhone_Camera_Application_(Xcode_4)中的示例进行操作,这样我就有了一个可以在设备中调用相机的应用程序(在我的情况下,我使用的是 iPod Touch)并捕获图片,然后它可以在图像视图中显示图片,或者选择相机胶卷中的图片以在图像视图中显示。这在我的 iPod Touch 中经过测试并完美运行。

现在,我想添加一个上传按钮,可以将捕获的图像上传到我的服务器(例如:http: //xxx.xxx.xxx.xxx/photo/),以便我可以在我的计算机中查看图像,任何人都可以建议一种方法让我这样做?或者如果它不能完成,我是否需要设置一个基于 php 的服务器来处理这个上传问题。

4

1 回答 1

0

您想在objective-c中将图像上传到php服务器,您可以这样做:

//To convert your image file to raw.
NSData *imageData   = UIImagePNGRepresentation(self.imageView.image);
NSString *urlString = @"http://sample.com/upload.php";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
//Boundary and Header.
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
//Your uploading file.
NSMutableData *bodyData = [NSMutableData data];
[bodyData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
/*
 * Declares the PHP received $_FILES variables.
 * - $_FILES['_varName']['name'] = _sample.png
 */
[bodyData appendData:[@"Content-Disposition: form-data; name=\"_varName\"; filename=\"_sample.png\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[bodyData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

[bodyData appendData:[NSData dataWithData:imageData]];
[bodyData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:bodyData];
//Received response of server.
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
//Dumps it.
NSLog(@"%@", returnString);

愿它能帮助你。

于 2013-06-16T06:45:45.813 回答