2016-07-22 11 views
0

Ich nehme das Bild von der Kamera auf und konvertiere das Bild in das Base64-Format. Es dauert länger, Bilder an den Server zu senden. Wenn es keine Internetverbindung gibt, speichere ich es in der lokalen Datenbank und sobald ich eine Internetverbindung habe, möchte ich mehrere Bilder an den Server senden. Was ist der beste Weg, Bilder von der App an den Server zu senden.Ordnungsgemäße Methode zum Senden von Bildern von der iOS App an den Server

+0

Das Senden von Bildern über base64 ist nicht ratsam, es dauert sehr lange, um hochgeladen zu werden. Verwenden Sie Multipart zum Hochladen. Gehen Sie über diesen Link http://stackoverflow.com/questions/29623187/upload-image-with-multipart-form-data-ios-in-swift – Madhu

+0

Sie können Bilder mit Multipart-Format senden. –

Antwort

-1

Sie können Anfrage mehrteiliger machen wie folgt und verwenden dann diese Anforderung in Ihrem NSURLSession

NSString *boundary = [NSString stringWithFormat:@"Boundary-%@", [[NSUUID UUID] UUIDString]]; 

     // configure the request 
    NSString *urlString = YOUR_URL; 
    NSURL *url =[NSURL URLWithString:urlString]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
    [request setHTTPMethod:@"POST"]; 
    // set content type 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
    [request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

    //create body 
    request.HTTPBody = [self createBodyWithParameters:params paths:@[filePath] fieldName:fieldName boundary:boundary]; //params(NSDictionary) WILL BE YOUR PARAMETERS TO WEB SERVICE 

    [request setValue:[NSString stringWithFormat:@"%lu",(long)[request.HTTPBody length]] forHTTPHeaderField:@"Content-Lenght"]; 
+0

Diese Frage ist vermerkt mit "swift". Ihre Lösung hat möglicherweise einen Wert, ist aber nicht in der von OP angeforderten Sprache verfasst. Bitte geben Sie eine Antwort in Swift. Vielen Dank. – Moritz

1

Haben Sie jemals Alamofire versucht? Es unterstützt Datei-Upload. Hier

ist ein Beispiel für die Bildlast:

public func requestImage(url: String) -> SignalProducer<UIImage, NetworkError> { 
     return SignalProducer { observer, disposable in 
      let serializer = Alamofire.Request.dataResponseSerializer() 
      Alamofire.request(.GET, url) 
       .response(queue: self.queue, responseSerializer: serializer) { 
        response in 
        switch response.result { 
        case .Success(let data): 
         guard let image = UIImage(data: data) else { 
          observer.sendFailed(.IncorrectDataReturned) 
          return 
         } 
         observer.sendNext(image) 
         observer.sendCompleted() 
        case .Failure(let error): 
         observer.sendFailed(NetworkError(error: error)) 
        } 
      } 
     } 
    } 

Und dies ist einer des Beispiels für async image load.

Verwandte Themen