2011-03-14 70 views
1

我刚刚开始使用xcode业务,目前为止这么好,除了这个小细节:我不知道如何将UIImage发布到网络。过去3天我一直在尝试一切(阅读和查询很多),但没有成功。答案是,我认为是在我的鼻子下面,仍然...没有运气。在网络上发布UIImage

我离开这里我写的代码(无论是在Objective-C和PHP):它根本不工作!没有图像上传。请,有人可以帮我吗?

//目标-C

NSData *theData = UIImagePNGRepresentation(photo.image); 
NSString *urlString = @"http://www.testes01.com/newsie/receberprofilephoto.php"; 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 
NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"file\"; filename=\"iphoneimage.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[NSData dataWithData:theData]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setHTTPBody:body]; 
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

// PHP

move_uploaded_file($_FILES["file"][tmp_name], "fotosprofile/" . $_FILES["file"]["name"]); 

预先感谢。

+0

这有效,唯一错误的不是CHMODing文件夹到777,所以你可以读写。 – jcrowson 2012-07-11 09:03:36

回答

1

这里是一个Web self.image的图片上传的代码是我所制作的特性和合成it.Get你的形象在self.image然后我UIImage对象: -

NSData *imagedata=[NSData dataWithData:UIImagePNGRepresentation(self.image)]; 
    NSString *base64string=[imagedata base64EncodedString]; 
    NSString *str = [NSString stringWithFormat:@"http://www.testes01.com/newsie/receberprofilephoto.php"]; 
    NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setPostValue:base64string forKey:@"imagedata"]; 
    [request setRequestMethod:@"POST"]; 
    [request setDelegate:self]; 
    [request startSynchronous]; 
    NSLog(@"responseStatusCode %i",[request responseStatusCode]); 
    NSLog(@"responseStatusString %@",[request responseString]); 

希望这可能会帮助你!

+1

嗨@Jenifer,谢谢你的及时回复。不幸的是,我也尝试过使用ASIHTTPRequest库,但它也没有工作。不过,我注意到几个小时前,我发布图像的服务器不允许我以编程方式上传图像;我尝试了chmod 777,但我没有权限。所以,我打电话给他们解决了我的问题。底线,代码没问题。对于什么是值得的,感谢您的回复,也许为了繁荣,代码保持在这里。只要记住,如果代码不起作用,问题可能与您的文件夹或文件权限有关。再见! – 2011-03-15 21:01:45