什麼是IM DOING我正在嘗試獲取AVAudioRecorder上傳到我們後端的音頻文件(可能長達一小時,例如播客)。除了上傳到服務器,如果用戶選擇,它需要能夠被「暫停」和「恢復」。因此,我相信,我需要在NSData
類上使用dataWithBytesNoCopy:buffer
來實現此目的。從文件獲取字節數據
WHERE IM AT我知道一個事實,我可以使用傳遞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];
感謝您的回答。但是我們的團隊明確地想要一個暫停按鈕來停止上傳,並且一個恢復按鈕可以從該文件被關閉的地方重新開始上傳。所以我們的API將被設計爲在用戶點擊包含上載停止的最後一個字節的「Resume」時發送給我們一個Header,然後我需要獲取這些信息並將其插入到'dataWithBytesNoCopy:buffer '從數據的正確位置開始再次上傳的方法。 –
那麼,上傳任務是不可恢復的,所以你最終會自己完成所有的工作... – matt
添加了NSFileHandle提到我的答案;這可能是你正在尋找的。 – matt