【问题标题】:How to convert binary data to NSstring?如何将二进制数据转换为 NSstring?
【发布时间】:2011-03-08 16:32:11
【问题描述】:

使用 AVAudioRecorder 录制后,必须将生成的声音文件发送到网络服务。文件数据必须经过 URL 编码并复制到 POST 请求的正文中。录音格式为 kAudioFormatAppleLossless。 作为第一步,在 URL 编码之前,我尝试使用

将 .caf 文件复制到 NSString
NSStringEncoding encoding;
 NSString * filestring = [NSString 
                         stringWithContentsOfURL:self.audioRecorder.url 
                     usedEncoding:&encoding 
                         error:&error];

我收到以下错误:

Error Domain=NSCocoaErrorDomain Code=264 "操作无法完成。(Cocoa 错误 264。)"

返回的编码是 0x5bab9f0,它不在为 NSStringEncoding 定义的值列表中。 写入文件时 AVAudioRecorder 使用什么编码?将二进制文件转换为 URL 编码字符串的最佳方法是什么?

【问题讨论】:

    标签: ios iphone url encoding binary-data


    【解决方案1】:

    从来没有。采用。 NSString。为了。数据。那是。不是。 A. 字符串... 使用 NSData 代替,您不需要对其进行 URLEncode(因为它“已经是”)。

    你可以用这个:

    NSMutableData *postData = [[NSMutableData alloc] init];
    [postData appendData:[@"--boundary\r\nContent-Disposition: form-data; name=\"myfile\"; filename=\"ad.gif\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [postData appendData:[NSData dataWithContentsOfURL:self.audioRecorder.url]];
    [postData appendData:[@"\r\n--boundary--\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    
    [myRequest setHTTPMethod:@"POST"]; // this you probably already did.
    [myRequest setHTTPBody:postData];
    

    【讨论】:

    • 文件内容必须作为参数复制到 POST 正文中,而不是作为表单数据发送。尝试使用 NSData,但结果不符合服务器的预期,见下文: sendFileRequest = [ASIFormDataRequest requestWithURL:myURL]; NSData * 数据 = [NSData dataWithContentsOfURL:audioRecorder.url]; [sendFileRequest setPostValue:data forKey:kParamRecordBinaryContent];
    • 您是否使用 $_FILES['myfile']; 请求文件(如果您使用的是 PHP)?顺便提一句。你正在使用 NSURLConnection + NSMutableURLRequest,对吧?
    • 它将转到一个网络服务。然而,发现的二进制数据必须首先为服务器进行 base64 编码,所以最终的解决方案是 'NSString * encodedString = [QSStrings encodeBase64WithData:[NSData dataWithContentsOfURL:audioRecorder.url]];'另见link非常感谢您的帮助
    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多