Загрузить изображение в быстром с параметром, используя Alamofire - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу загрузить изображение из галереи, но оно показывает какую-то ошибку, подобную этой

мой код такой

fun c groupProfile (completion:@escaping CompletionHandler) {

    let imageSource = pickedImage.jpegData(compressionQuality: 1.0)
    let parameters = ["filename": imageSource]

    let headers : HTTPHeaders = [
        "token" : AuthServices.instance.authToken,
        "Content-type": "multipart/form-data",
        "Content-Disposition" : "form-data"
    ]
    AF.upload(multipartFormData: { multipartFormData in
          multipartFormData.append(imageSource!, withName: "filename",fileName: "Avatar.jpeg" , mimeType: "image/png")
            for (key, value) in parameters
            {
                multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            }
        let jpegData = self.pickedImage.jpegData(compressionQuality: 1.0)
            multipartFormData.append(Data((jpegData)!), withName: "filename")

    }, to: SAVE_IMAGE_ON_SERVER_URL,method: .put,headers: headers)

        .response { response in
            debugPrint(response)
    }

}

1 Ответ

1 голос
/ 29 апреля 2020

Я думаю, вам нужно только добавить multipartFormData.append(imageSource!, withName: "filename",fileName: "Avatar.jpeg" , mimeType: "image/png"), изменить mimeType на "image / jpeg" и удалить следующие строки, потому что он пытается повторить тот же лог c.

           for (key, value) in parameters
            {
                multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            }
        let jpegData = self.pickedImage.jpegData(compressionQuality: 1.0)
            multipartFormData.append(Data((jpegData)!), withName: "filename")

Я отформатировал код, который должен загрузить изображение как то, что вы пытаетесь достичь.

func groupProfile(completion:@escaping CompletionHandler){

    guard let imageData = pickedImage.jpegData(compressionQuality: 1.0) else{
        return
    }

    let headers : HTTPHeaders = [
        "token" : AuthServices.instance.authToken,
        "Content-type": "multipart/form-data",
        "Content-Disposition" : "form-data"
    ]

    let upload:(MultipartFormData)->Void = { multidata in
        multidata.append(imageData, withName: "filename", fileName: "Avatar.jpg", mimeType: "image/jpeg")
    }

    Alamofire.upload(multipartFormData: upload,
                to: SAVE_IMAGE_ON_SERVER_URL,
                method: .post,
                headers: headers){ response in

        debugPrint(response)
    }
}
...