iOS, wie Sie eine große Asset-Datei per Streaming in den Server hochladen

Ich bin ein neuer iOS-Programmierer.
Ich möchte eine große Datei (Video oder Bild) von hochladenAsset-Bibliothek Mein ursprünglicher Weg ist einfach zu benutzenNSMutableURLRequest und anhängenNSData(großes Video oder großes Bild), und Absturz ist in folgendem Code passiert:

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

Ich weiß, dass dieser Absturz darauf zurückzuführen ist, dass der Speicher nicht ausreicht und die Videodatei nicht einfach NSData zugewiesen werden kann.
Ich habe dies 2 Tage lang googelt und es gibt verschiedene Möglichkeiten, dies zu lösen.

Drittanbieter-Bibliothek verwenden: z. B. AFNetworking, ASIHTTPRequest (ich möchte sie jedoch nicht verwenden, da ich nicht weiß, wann die Wartung oder Aktualisierung beendet wird)Verwenden Sie Streaming, um große Dateien hochzuladen

und ich möchte Streaming Way (Punkt 2) verwenden, um Sachen hochzuladen,
Ich habe diesen Link gefunden:http://zh.scribd.com/doc/51504708/10/Upload-Files-Over-HTTP
Schauen Sie wie kann mein Problem lösen, aber immer noch nicht sehr klar zu wissen, wie zu tun ist

Frage 1: In diesem Link gibt es ein Beispiel. Die Upload-Datei stammt aus dem Bundle
Wie wird ein Asset in einen Stream umgewandelt? oder Asset in den APP-Ordner kopieren?
Ich habe diesen Link gefundenKopieren Sie das Bild aus der Assets-Bibliothek in einen App-Ordner
kann aber immer noch nicht den Weg finden.

Frage 2: oder Gibt es ein anderes übersichtliches Streaming-Beispiel für das Hochladen großer Dateien?



Vielen Dank für Ihre Leidenschaft

updated1: Nachdem ich needNewBodyStream-Delegaten implementiert hatte, schien die Meldung "Request Stream Erschöpfung" behoben zu sein. Stattdessen wurde eine andere Fehlermeldung "Error Domain = kCFErrorDomainCFNetwork Code = 303" angezeigt. Der Vorgang konnte nicht abgeschlossen werden. "

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage