iOS, как загрузить большой файл активов в сервер потоковой передачи

Я новый программист iOS.

Я хочу загрузить большой файл (видео или изображение) избиблиотека активов в мой, мой оригинальный способ просто использоватьNSMutableURLRequest и добавитьNSData(большое видео или большое изображение), и сбой произошел в следующем коде:

    ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *asset){
        //.......some code I just skip it...
        ALAssetRepresentation *rep = [asset defaultRepresentation];
        void *buffer = [rawData mutableBytes];
        [rep getBytes:buffer fromOffset:0 length:size error:nil];
        NSData *videoData = [[NSData alloc] initWithBytes:buffer length:size];//crash here
        [self startUploading:videoData];
    }

Я знаю, что это сбой, потому что памяти недостаточно, видео файл можетт просто выделить NSData.I '

Гугл это в течение 2 дней, и кажется, есть несколько способов решить эту проблему.

использовать стороннюю библиотеку: такую как AFNetworking, ASIHTTPRequest (но я нене хочу его использовать, потому что нене знаю, когда это прекратит поддерживать или обновлять)использовать потоковую передачу для загрузки большого файла

и я хочу использовать потоковый способ (пункт 2), чтобы загружать вещи,

Я нашел эту ссылку:http://zh.scribd.com/doc/51504708/10/Upload-Files-Over-HTTP

Похоже, может решить мою проблему, но все еще не очень понятно, как это сделать



Вопрос 1: в этой ссылке есть пример, файл для загрузки из пакета

как превратить актив в поток? или скопировать актив в приложениепапка с?

Я нашел эту ссылкуСкопируйте изображение из библиотеки ресурсов в папку приложения

но до сих пор не могу найти дорогу.

Вопрос 2: или есть другой более понятный пример потоковой передачи для загрузки большого файла?







Спасибо за вашу страсть



updated1: после того, как я реализовал NeedNewBodyStream делегат, "исчерпание потока запросов " сообщение, казалось, решено, но вместо этого встречаются другиеОшибка домена = kCFErrorDomainCFNetwork Code = 303 "Операция не моглане будет завершено ". как это решить?

-(NSInputStream *)connection:(NSURLConnection *)connection needNewBodyStream:(NSURLRequest *)request
{
    [NSThread sleepForTimeInterval:2];
    NSInputStream *fileStream = [NSInputStream inputStreamWithFileAtPath:pathToBodyFile];
    if (fileStream == nil) {
        NSLog(@"NSURLConnection was asked to retransmit a new body stream for a request. returning nil!");
    }
    return fileStream;
}

Ответы на вопрос(2)

Ваш ответ на вопрос