我发送到服务器视频(.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中的'+'。