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