1
用AVAudioRecorder录制后,生成的声音文件必须发送到Web服务。文件数据必须经过URL编码并复制到POST请求的主体中。录音格式为kAudioFormatAppleLossless。 作为第一步,URL编码之前,我试图把文件的.caf复制到的NSString,使用如何将二进制数据转换为NSstring?
NSStringEncoding encoding;
NSString * filestring = [NSString
stringWithContentsOfURL:self.audioRecorder.url
usedEncoding:&encoding
error:&error];
我得到了以下错误:
Error Domain=NSCocoaErrorDomain Code=264 "The operation couldn\u2019t be completed. (Cocoa error 264.)"
编码返回信息0x5bab9f0,它不在为NSStringEncoding定义的值列表中。 AVAudioRecorder在写入文件时使用什么编码?将二进制文件转换为URL编码字符串的最佳方式是什么?
文件内容必须被复制到POST体作为参数,而不是发送为形式的数据。尝试使用NSData,但结果并不像服务器预期的那样,见下文:sendFileRequest = [ASIFormDataRequest requestWithURL:myURL]; NSData * data = [NSData dataWithContentsOfURL:audioRecorder.url]; \t \t [sendFileRequest setPostValue:data forKey:kParamRecordBinaryContent]; – primulaveris 2011-03-08 16:51:56
您是否使用$ _FILES ['myfile']请求文件; (如果你使用PHP)?顺便说一句。你*是*使用NSURLConnection + NSMutableURLRequest,对吧? – elslooo 2011-03-08 18:47:08
这是一个web服务。然而,发现的二进制数据必须首先为服务器进行base64编码,因此最终的解决方案是'NSString * encodedString = [QSStrings encodeBase64WithData:[NSData dataWithContentsOfURL:audioRecorder.url]];'另请参见[链接](http://stackoverflow.com/questions/392464/any-base64-library-on-iphone-sdk)非常感谢您的帮助 – primulaveris 2011-03-09 19:58:13