如何在iPhone上将图片上传到远程服务器?

4

我正在尝试上传通过相机拍摄的图像。我正在尝试以下代码将图像上传到远程服务器。

-(void)searchAction:(UIImage*)theImage
{
    UIDevice *dev = [UIDevice currentDevice];
    NSString *uniqueId = dev.uniqueIdentifier;

    NSData * imageData = UIImagePNGRepresentation(theImage);

    NSString *postLength = [NSString stringWithFormat:@"%d",[imageData length]];

    NSString *urlString = [@"http://www.amolconsultants.com/im.jsp?" stringByAppendingString:@"imagedata=iPhoneV0&mcid="];
    urlString = [urlString stringByAppendingString:uniqueId];
    urlString = [urlString stringByAppendingString:@"&lang=en_US.UTF-8"];

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:imageData];

    NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];
    if (conn == nil) 
    {
        NSLog(@"Failed to create the connection");
    }
}

但是没有任何帖子。控制台窗口中也没有任何内容。我在操作表中调用此方法。当用户单击操作表的第一个按钮时,将调用此方法来发布图像。
有人能帮助我吗...
任何代码都会非常有帮助...
提前致谢...

我没有立即看到您代码中的任何错误,无论如何,您应该在控制台窗口中看到输出。您尝试使用调试器逐步执行它了吗? - Frank Schmitt
我还没有尝试调试这个程序... - Atulkumar V. Jain
1个回答

3

您可以使用第三方库 asi-http-request。它可以帮助您简化大部分繁琐的工作。在您的情况下,您只需要按照以下步骤操作:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request appendPostData:imageData];
[request setRequestMethod:@"PUT"];

但我正在尝试从iPhone上传图像。该图像不在我的Mac上,它将由用户使用iPhone相机拍摄,我想将此图像发布到服务器上。你能帮我吗? - Atulkumar V. Jain
我在谈论iPhone,而不是Mac。您可以将图像保存到“文档”文件夹中,然后执行相同的操作。 - Hoang Pham
使用NSData的以下函数:[urlData writeToFile:filePath atomically:NO]; - Hoang Pham
否则,您不需要保存到文档文件夹,这里已经有了NSData,您可以使用ASI库的其他函数直接发布NSData。 - Hoang Pham
它给我报错,指出ASIHTTPRequest在此方法中未声明首次使用。我需要导入一些头文件或添加一些框架吗... - Atulkumar V. Jain
哦,你必须按照我给你提供的网站上的设置说明来调用那个函数。 - Hoang Pham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接