我必须预编码二进制数据,以便在ios上将其作为base64发送吗?

时间:2014-03-06 10:33:29

标签: php ios iphone ios7 base64

我发送到服务器视频(.mov)以前的devide文件到块。每个块我编码base64并在HTTP POST中发送它。 PHP-server使用标准解码器解码base64字符串。发送前的块大小更大,然后在服务器上解码。问题:在将其编码为base64之前,我还必须以某种方式对二进制数据进行编码吗?

有我的代码:

// ...

NSFileHandle* file = [NSFileHandle fileHandleForReadingAtPath:path];
if( file )
{
     [file seekToFileOffset:[[XDRUtils toNumber:[obj valueForKey:@"offset"]] longLongValue]];
      NSData* data = [file readDataOfLength:xkChunckSize];
      [file closeFile];

       NSString* base64 = [data toBase64String];

       [post setObject: base64 forKey: @"record_segment_content"];

}

// send to server
// ...

// Category for base64 en
@implementation NSData (XDRBase64)

-(NSString*)toBase64String
{
    NSString *string;

    if ([self respondsToSelector:@selector(base64EncodedStringWithOptions:)])
    {
        string = [self base64EncodedStringWithOptions:kNilOptions];  // iOS 7+
    }
    else
    {
        string = [self base64Encoding];                              // pre iOS7
    }

    return string;
}

// ...

@end

更新

问题解决了。在php-server上,我们在解码之前将所有空格字符替换为base64-string中的'+'。

0 个答案:

没有答案