iOS, jak przesłać duży plik zasobów do serwera poprzez przesyłanie strumieniowe

Jestem nowym programistą iOS.
Chcę przesłać duży plik (wideo lub obraz) zbiblioteka zasobów do sever, Mój oryginalny sposób to po prostu użycieNSMutableURLRequest i dołączNSData(duży film lub duży obraz) i nastąpił awaria w następującym kodzie:

    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];
    }

Wiem, że ta awaria jest spowodowana tym, że pamięć nie wystarcza, plik wideo nie może po prostu przydzielić do NSData.
Mam to na Google przez 2 dni i brzmi, że istnieje kilka sposobów rozwiązania tego problemu.

użyj biblioteki innej firmy: takiej jak AFNetworking, ASIHTTPRequest (ale nie chcę jej używać, ponieważ nie wiesz, kiedy to zatrzyma konserwację lub aktualizację)użyj przesyłania strumieniowego, aby przesłać duży plik

i chcę użyć sposobu przesyłania strumieniowego (punkt 2) do przesyłania materiałów,
Znalazłem ten link:http://zh.scribd.com/doc/51504708/10/Upload-Files-Over-HTTP
Wygląda na to, że może rozwiązać mój problem, ale wciąż nie jest jasne, jak to zrobić

Pytanie 1: istnieje przykład w tym linku, plik do przesyłania jest z pakietu
jak sprawić, by aktywa stały się strumieniem? lub skopiować zasób do folderu aplikacji?
Znalazłem ten linkSkopiuj obraz z biblioteki zasobów do folderu aplikacji
ale wciąż nie mogę znaleźć drogi.

Pytanie 2: lub Czy istnieje inny, bardziej przejrzysty przykład przesyłania strumieniowego dużego pliku?



Dziękuję za twoją pasję

updated1: po zaimplementowaniu delegatu needNewBodyStream komunikat „wyczerpanie strumienia żądania” wydawał się rozwiązany, ale zamiast tego spotkałam się z inną „domeną błędów = kCFErrorDomainCFNetwork Code = 303” Operacja nie mogła zostać zakończona.

-(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;
}

questionAnswers(2)

yourAnswerToTheQuestion