通过 NSURLRequest 将音频文件发布到 Web 服务器并将其检索回来时出现问题


Issue in posting an audio file to a web server through a NSURLRequest and retrieving it back

我正在编写一个应用程序,该应用程序需要将mp3或任何其他常见音频格式的音频文件发送到服务器。我正在使用NSURLConnection实例来建立此连接。我正在使用 post 方法,因为接收信息的文件是.php。在同一连接中,我需要发送其他参数,这些参数主要是字符串和整数。我面临的问题实际上是发送音频文件并在服务器中接收它。我正在使用下一个代码来建立我的连接:

NSMutableURLRequest *localRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"whateverphpfile"]];
[localRequest setHTTPMethod:@"POST"];
[self setRequest:localRequest];
[localRequest release];
NSMutableData *body = [[NSMutableData alloc] init];
NSString *testerSTR = [NSString stringWithFormat:@"file=%@", [[NSBundle mainBundle] pathForResource:@"header" ofType:@"png"]];
[body setData:[testerSTR dataUsingEncoding:NSUTF8StringEncoding]];
//_request is of type NSMutableURLRequest
[_request setHTTPBody:body];
//[_request setValue:@"multipart/form-data" forHTTPHeaderField:@"enctype"];
[_request setValue:@"multipart/form-data" forHTTPHeaderField:@"content-type"];
NSLog(@"the body sent is: %@", [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding]);
_connection = [[NSURLConnection alloc] initWithRequest:_request delegate:self];
if (_connection)
{
    [self setWebData:[NSMutableData data]];
}
else
{
    NSLog(@"theConnection is NULL");
}

检查数据并将其返回到设备时的问题在于它是一个像<564024S D451475 DS5752... ...552D4S5>这样的 laaarge 字符串。我应该怎么做才能接收实际的音频文件,或者如何将该大字符串转换为本机 iOS 类可读的音频文件?

您需要以多部分/表单数据格式发送数据。本主题的第二个答案包含应该执行此操作的代码:NSURL 异步上传文件?

你也可以使用ASIHTTPRequest库来做到这一点。