2016-08-15 8 views
1

Я пытаюсь загрузить изображения вместе с другими параметрами сообщений, используя Alamofire.Swift Alamofire отправляет массив изображений вместе с другими параметрами

Глядя на документ я вижу:

Alamofire.upload(
    .POST, 
    "https://httpbin.org/post", 
    multipartFormData: { multipartFormData in 
     multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn") 
     multipartFormData.appendBodyPart(fileURL: rainbowImageURL, name: "rainbow") 
    }, 
    encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .Success(let upload, _, _): 
      upload.responseJSON { response in 
       debugPrint(response) 
      } 
     case .Failure(let encodingError): 
      print(encodingError) 
     } 
    } 
) 

Но как я могу загрузить массив изображений как:

var arrayOfImages: [UIImage] = [some images...] 

вместе с другими после данных:

let parameters: [String: AnyObject] = [ 
      "id": id, 
      "title": title, 
      "desc": description, 
      "images[]": arrayOfImages 
     ] 

ответ

2
func uploadProfileGIF(imageArray: NSMutableArray){ 
    var count = 0 
    let bucketname = DAO.getBucketNameForLoggedInUser() 
    let uploadUrl = "https://whatever.com/whatever" 
    for i in imageArray{ 
     var objectname = "picture" + String(count) 
     let image = i; 
     //Turn image into data 
     let imageData: NSData = UIImagePNGRepresentation(image as! UIImage)! 
     let params = ["objectname" : objectname, "bucketname" : bucketname!, "isGifImgae" : "True", "content_type" : "image/jpeg"] 

     let manager = AFHTTPSessionManager() 
     manager.POST(uploadUrl, parameters: params, constructingBodyWithBlock: { (AFMultipartFormData) in 

      AFMultipartFormData.appendPartWithFileData(imageData, name: "file", fileName: "image", mimeType: "image/jpeg") 
      }, progress: nil, success: { (s:NSURLSessionDataTask, response) in 
       print(response) 
     }) { (s:NSURLSessionDataTask?, e:NSError?) in 
      print(e) 
     } 
     count+=1 
    } 

} 

Так я это сделал. Надеюсь это поможет. Его AlamoFire, и это запрос POST, просто другой синтаксис, я думаю. Просто цикл for, который вызывает вызов API для каждого изображения в вашем массиве.

EDIT:

Таким образом, вместо того, чтобы использовать для цикла и вызова API пять отдельных раз, просто изменить имя AFMultipartofrmdata. Передайте в 5 файлах, затем в свой API при доступе к файлам, просто получите доступ к ним по имени. Например, так, что мой API хватает файла, который находится в Python, это как так

data = self.request.get('file') 

Теперь данные мое изображение, и я могу загрузить его в качестве такового. Просто выполните это пять раз в одном вызове API.

AFMultipartFormData.appendPartWithFileData(imageData1, name: "file1", fileName: "image", mimeType: "image/jpeg") 
    AFMultipartFormData.appendPartWithFileData(imageData2, name: "file2", fileName: "image", mimeType: "image/jpeg") 
    AFMultipartFormData.appendPartWithFileData(imageData3, name: "file3", fileName: "image", mimeType: "image/jpeg") 
    AFMultipartFormData.appendPartWithFileData(imageData4, name: "file4", fileName: "image", mimeType: "image/jpeg") 
    AFMultipartFormData.appendPartWithFileData(imageData5, name: "file5", fileName: "image", mimeType: "image/jpeg") 

Затем просто назначьте имена и NSData внутри цикла for.

Тогда на стороне API что-то это нравится;

image1 = self.request.get('file1') 
image2 = self.request.get('file2') 
image3 = self.request.get('file3') 
image4 = self.request.get('file4') 
image5 = self.request.get('file5') 

Надеюсь, это поможет! Это то, что я изменил свой API-вызов, вместо того, чтобы называть 5 раз для каждого пользователя.

+0

Спасибо за совместное использование, но мне нужно отправить все изображения в один и тот же вызов API:/ – user2636197

+0

Я только что обновил ответ –

Смежные вопросы