2012-04-09 3 views
4

私は、目的cとNSUrlRequestを使用して簡単なファイルアップロードをしようとしています。NSUrlRequestを使用してファイルをアップロードすると、ゼロバイトファイルサイズになります

私の現在の(多かれ少なかれグーグルと一緒に入れ)コード:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:@"http://127.0.0.1:8000/api/upload/"]]; 
[request setHTTPMethod:@"POST"]; 


NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 


NSMutableData *postData = [NSMutableData data]; 
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

// Append the Usertoken 
[postData appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"token\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithString:@"Content-Type: application/json\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithFormat:@"%@", token] dataUsingEncoding:NSUTF8StringEncoding]]; 

// Append the file 
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];  
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"fileupload\"; filename=\"%@\"\r\n", file]dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

// Close 
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

// Append 
[request setHTTPBody:postData]; 

すべてがゼロバイトのファイルサイズを持つファイルをアップロードしました。サーバー側の部品が正しく機能しています。 cURLでテスト済み。

私は何かを忘れましたか?

答えて

4

私の間違いが見つかりました。非常に単純なものでした。なぜなら、httpに関する知識が不足していたからです。

私はオクテットストリーム

NSData *photo = [[NSFileManager defaultManager] contentsAtPath:file]; 

// Append the file 
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];  
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"fileupload\"; filename=\"%@\"\r\n", file]dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[NSData dataWithData:photo]]; 
後のファイルデータを追加するのを忘れ
関連する問題