Objective c NSMutableURLRequest:使用setHTTPBodyStream而不是setHTTPBody上载文件

Objective c NSMutableURLRequest:使用setHTTPBodyStream而不是setHTTPBody上载文件,objective-c,ios,nsmutableurlrequest,Objective C,Ios,Nsmutableurlrequest,我目前正在使用[body appendData:[NSData dataWithData:data]]通过HTTP Post上传文件其中数据是文件的NSMutableData表示形式 // Set content type to be form data NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *co

我目前正在使用
[body appendData:[NSData dataWithData:data]]通过HTTP Post上传文件其中数据是文件的NSMutableData表示形式

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

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

// Set up web request with HTTP post headers for 1 form field which is the image
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding: NSUTF8StringEncoding]];
[body appendData: [NSData dataWithData:data]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding: NSUTF8StringEncoding]];

// Set the body
[request setHTTPBody: body];

由于内存限制,我了解到最好使用
setHTTPBodyStream
上传并传入文件在磁盘上的位置-如何使用此方法设置其他属性,如内容配置?

您必须准备一个包含整个HTML请求正文的文件,包括多部分边界、内容类型和配置,并将其用于
setHTTPBodyStream

还有其他选择(子类化
NSInputStream
,这似乎有点棘手,还有第三方库,如ASIHTTPRequest)。post提供了更多信息和链接