从文件中获取字节数据
Getting byte Data from File
我在做什么 我正在尝试获取我用 AVAudioRecorder 录制的要上传的音频文件(可能长达一个小时。例如播客)到我们的后端。除了上传到服务器之外,如果用户选择,它还需要能够 "Paused" 和 "Resumed"。因此,我相信,我需要在 NSData
class 上使用 dataWithBytesNoCopy:buffer
来实现这一点。
我在哪里 我知道我可以使用传递的 self.mediaURL
属性:
获取数据
if (self.mediaURL) {
NSData *audioData = [NSData dataWithContentsOfURL:self.mediaURL];
if (audioData) {
[payloadDic setObject:audioData forKey:@"audioData"];
}
}
但是,这不会给我所需的功能。我正在尝试跟踪上传的字节数,以便在用户暂停时我可以继续。
问题 我如何使用提供的 self.mediaURL
以便我可以检索文件并能够像这个例子一样计算字节长度?
Byte *buffer = (Byte*)malloc((long)audioFile.size);
NSUInteger buffered =[rep getBytes:buffer fromOffset:0.0 length:(long)rep.size error:nil];
NSMutableData *body = [[NSMutableData alloc] init];
body = [NSMutableData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
不要通过重新发明轮子让事情变得更复杂,而是使用系统给你的东西。 NSURLSession 让你做一个 background upload。您将任务交给会话(使用后台会话配置创建)然后走开。如果可以,上传会分段进行。不需要 "pause" 或 "resume";系统会处理一切。您的应用甚至不必 运行。如果需要身份验证,您的应用程序将根据需要在后台唤醒。该架构专为您描述的情况而设计。
如果问题是您希望随机访问文件数据而不必将整个内容读入大量 NSData,请使用 NSFileHandle。
我在做什么 我正在尝试获取我用 AVAudioRecorder 录制的要上传的音频文件(可能长达一个小时。例如播客)到我们的后端。除了上传到服务器之外,如果用户选择,它还需要能够 "Paused" 和 "Resumed"。因此,我相信,我需要在 NSData
class 上使用 dataWithBytesNoCopy:buffer
来实现这一点。
我在哪里 我知道我可以使用传递的 self.mediaURL
属性:
if (self.mediaURL) {
NSData *audioData = [NSData dataWithContentsOfURL:self.mediaURL];
if (audioData) {
[payloadDic setObject:audioData forKey:@"audioData"];
}
}
但是,这不会给我所需的功能。我正在尝试跟踪上传的字节数,以便在用户暂停时我可以继续。
问题 我如何使用提供的 self.mediaURL
以便我可以检索文件并能够像这个例子一样计算字节长度?
Byte *buffer = (Byte*)malloc((long)audioFile.size);
NSUInteger buffered =[rep getBytes:buffer fromOffset:0.0 length:(long)rep.size error:nil];
NSMutableData *body = [[NSMutableData alloc] init];
body = [NSMutableData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
不要通过重新发明轮子让事情变得更复杂,而是使用系统给你的东西。 NSURLSession 让你做一个 background upload。您将任务交给会话(使用后台会话配置创建)然后走开。如果可以,上传会分段进行。不需要 "pause" 或 "resume";系统会处理一切。您的应用甚至不必 运行。如果需要身份验证,您的应用程序将根据需要在后台唤醒。该架构专为您描述的情况而设计。
如果问题是您希望随机访问文件数据而不必将整个内容读入大量 NSData,请使用 NSFileHandle。