2009-05-21 17 views
1

Windows上のC++経由でWebサーバーにファイルをアップロードする際に、多数の例が見つかりました。MacでHTTP/HTTPSおよび/またはFTP/FTPS経由でファイルをアップロードする

しかし、私はMacで同じことを達成するのに役立つ例を見つけるために、ロットの検索(と私はグーグルで良かったと思った!)の後に苦労しています。

誰かが、Mac OS上のWebサーバーにファイルをアップロードする方法について、C++または目的のCを使用して私に指摘できますか?

これは、HTTP/HTTPS または FTP/FTPS(またはその両方)のいずれかを使用して行うことができます。

ありがとうございます!

答えて

3

「libcurl」を使用できます.Wikipediaのthis articleを参照してください。

1

を探しているあなたはNSMutableURLRequestでNSURLConnectionを使用したい、このようなものかもしれません:

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を使用して同じことを行うのはもう少し複雑ですが、これはファイルのボディをポストするために働きます。

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

そして、あなたは体を追加する必要があります:あなたはNSDataオブジェクトは、あなたのようなヘッダを設定するように、HTTPポストのボディのように設定されていることを確認したくなるでしょう。サーバー側では、ファイル名とファイルを構成するバイト数を取得できます。

これは正確に使用するコードではありませんが、どのように進めるべきかを知っておく必要があります。

関連する問題