0

我正在以某种.wav格式录制音频并将.wav1文件转换为NSData并发送到服务器。

记录的路径是:

文件://localhost/var/mobile/Applications/8F81BA4C-7C6F-4496-BDA7-30C45478D758/Documents/sound.wav

我正在使用以下方式发送到服务器:

audioURL=@"file://localhost/var/mobile/Applications/8F81BA4C-7C6F-4496-BDA7-30C45478D758/Documents/sound.wav";


NSURL *url=[NSURL URLWithString:urlString];
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url];
    [request setHTTPMethod: @"POST"];
    [request setValue: @"multipart/form-data" forHTTPHeaderField: @"Content-Type"];
NSData *audiodata = [NSData dataWithContentsOfURL:audioURL];
NSMutableData *highScoreData = [NSMutableData data];
[highScoreData appendData:audiodata];
[request setHTTPBody:highScoreData];
 nsurlConnection = [[NSURLConnection alloc] initWithRequest: request
                                                  delegate: self];

当我播放它时,它会给我正确的录制声音。但是,当我从服务器播放相同的录制语音时,它会显示“引用”而不是实际录制的语音。

可以在此处找到有关如何录制音频以及如何发送音频的完整代码。

请告诉我我这样做的方式(即发送到服务器)是否正确?

4

3 回答 3

0

多部分请求不是这样工作的。您需要边界来区分不同数据。请检查:http ://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

对于解决方案,我使用 AFNetworking ( https://github.com/AFNetworking/AFNetworking )。AFHTTPClient 可以为您创建多部分请求。检查:http ://afnetworking.github.com/AFNetworking/Classes/AFHTTPClient.html#//api/name/multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock :

于 2013-03-13T07:35:58.597 回答
0

这是我用来上传的代码。标头部分取决于您的服务器如何处理它。AsiFormdata 在这里更合适。

NSString* 文件字符串;

fileString = [[self documentsPath]
              stringByAppendingPathComponent:@"testcombine.m4a"];

NSData* songData=[NSData dataWithContentsOfFile:fileString];



NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://%@/UsingWebServer2/UploadServlet",RemoteEndpoint]];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

 [request setData:songData withFileName:@"upload_test.m4a" andContentType:@"audio/m4a" forKey:@"file"];

//[request appendPostData:[Jstring  dataUsingEncoding:NSUTF8StringEncoding]]; 
[request startSynchronous];
于 2013-04-09T03:09:37.933 回答
-1

如果您想通过 multipart/form-data 发送数据,请使用ASIFormDataRequest. 在此处查找文档以获取更多参考。

于 2013-03-10T13:12:57.453 回答