2016-03-11 11 views
5

Ho provato a caricare l'immagine con AFNetworking3.0. Ho provato a trovare come caricare l'immagine da tutti gli stackoverflow e tutorial, ma tutti questi sono relativi con AFNetworking2.0 e successivi. L'obiettivo principale è che ho intenzione di caricare l'immagine sul sito web.Caricamento di un'immagine tramite AFNetworking 3.0

Una volta che l'immagine è stata caricata, l'URL dell'immagine deve essere presente sul sito web.

Si prega di consultare il codice qui sotto.

AFHTTPRequestOperationManager *requestManager; 

[requestManager POST:KAPIUploadOutfit parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 
{ 
     [formData appendPartWithFileURL:fileURL name:@"photo_url" fileName:filename mimeType:@"image/png" error:nil]; 
    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     successCB(responseObject); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     errorCB(CONNECTION_ERROR); 
    }]; 

Non sono sicuro del parametro. Per favore dimmi come si fa.

+1

Ecco una semplice app Swift in grado di caricare immagini. https://github.com/ryantxr/ios-image-upload – ryantxr

risposta

8
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil]; 
} error:nil]; 

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

NSURLSessionUploadTask *uploadTask; 
uploadTask = [manager 
      uploadTaskWithStreamedRequest:request 
      progress:^(NSProgress * _Nonnull uploadProgress) { 
       // This is not called back on the main queue. 
       // You are responsible for dispatching to the main queue for UI updates 
       dispatch_async(dispatch_get_main_queue(), ^{ 
        //Update the progress view 
        [progressView setProgress:uploadProgress.fractionCompleted]; 
       }); 
      } 
      completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
       if (error) { 
        NSLog(@"Error: %@", error); 
       } else { 
        NSLog(@"%@ %@", response, responseObject); 
       } 
      }]; 

[uploadTask resume]; 

In questo codice http://example.com/upload è api in cui l'immagine sta per caricare e di file: //path/to/image.jpg è il tuo percorso dell'immagine locale.

+0

Puoi fornirmi il percorso del file, per esempio? Non so cosa dia il parametro - "file: //path/to/image.jpg". –

+0

Io uso il percorso del file - @ "file: //pic1.png". Penso di aver sbagliato il filepath. Per favore, dimmi per esempio. Grazie mille –

+1

da dove stai caricando l'immagine? – ivarun

0

Nell'attività di caricamento di AFNetworking 3.0 funziona in questo modo.

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil]; 
    } error:nil]; 

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

NSURLSessionUploadTask *uploadTask; 
uploadTask = [manager 
       uploadTaskWithStreamedRequest:request 
       progress:^(NSProgress * _Nonnull uploadProgress) { 
        // This is not called back on the main queue. 
        // You are responsible for dispatching to the main queue for UI updates 
        dispatch_async(dispatch_get_main_queue(), ^{ 
         //Update the progress view 
         [progressView setProgress:uploadProgress.fractionCompleted]; 
        }); 
       } 
       completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
        if (error) { 
         NSLog(@"Error: %@", error); 
        } else { 
         NSLog(@"%@ %@", response, responseObject); 
        } 
       }]; 

[uploadTask resume]; 

Per la guida completa, verificare AFNetworking Guide. Spero che risolva il tuo problema.

+0

Grazie per la risposta rapidamente. Sto caricando l'immagine con alcuni parametri. Per exampe, ho intenzione di registrare l'account, ho bisogno di caricare l'immagine dell'utente con nome, indirizzo email, ecc. Inoltre, voglio sapere qual'è il fileURLWithPath: @ "file: //path/to/image.jpg "] e URLString: @" http://esempio.com/upload "nel codice. Grazie! –