在Mac上通过HTTP / HTTPS和/或FTP / FTPS上传文件

时间:2009-05-21 21:13:28

标签: c++ objective-c macos file upload

我找到了很多关于在Windows上通过C ++将文件上传到Web服务器的例子。

然而,经过很多的搜索(我认为我对谷歌很好!),我正在努力寻找任何帮助我在Mac上实现相同目的的例子。

有人能指出我如何使用C ++或Objective C将文件上传到Mac OS上的Web服务器吗?

可以通过HTTP / HTTPS FTP / FTPS(或两者)。

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用'libcurl',请参阅维基百科上的this article

答案 1 :(得分:1)

connection Kit可能就是你要找的东西

答案 2 :(得分:1)

您可能希望将NSURLConnection与NSMutableURLRequest一起使用,如下所示:

NSMutableURLRequest *theRequest=[[NSMutableURLRequest alloc] init];
[theRequest addValue:@"attachment;filename=\"file2.gif\"" forHTTPHeaderField:@"Content-disposition"];
[theRequest addValue:@"image/gif" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue:@"binary" forHTTPHeaderField:@"Content-Transfer-Encoding"];
[theRequest setHttpBody:myBodyNSDataObject];
// create the connection with the request
// and start loading the data
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
    // Create the NSMutableData that will hold
    // the received data
    // receivedData is declared as a method instance elsewhere
    receivedData=[[NSMutableData data] retain];
} else {
    // inform the user that the download could not be made
}

您可以使用NSMutableURLRequest方法修改或设置标头:

- (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field

响应将是服务器返回的任何内容。您可以查看Apple's documentation以获取要执行的其他委托方法以获取响应的正文。您应该有NSData对象表示您要准备上传的文件的内容。使用FTP做同样的事情有点复杂,但这可以用来发布文件正文。您需要确保您的NSData对象设置为HTTP帖子的正文,以便您设置如下标题:

[theRequest addValue:@"attachment;filename=\"file2.gif\"" forHTTPHeaderField:@"Content-disposition"];
[theRequest addValue:@"image/gif" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue:@"binary" forHTTPHeaderField:@"Content-Transfer-Encoding"];

然后你应该追上身体。在服务器端,您可以获取文件名和组成文件的字节。

这不完全是您应该使用的代码,但它应该让您了解如何继续。