ошибка загрузки файлов .PDF с дополнительными параметрами с помощью Alamofire (Multi Part Data) - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь загрузить PDF из ios приложения, используя Alamofire, и получаю сообщение об ошибке:

УСПЕХ: {

status = 400;

title = "Bad Request";

traceId = "0HLTUPOJDQ33R:00000001";

type = "https://tools.ietf.org/html/rfc7231#section-6.5.1";

}

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

     static func uploadMultiPartData<T:Decodable>(endUrl: String, fileURL: URL, parameters: [String : Any]?, completion: ((_ result: Result<T>) -> Void)?) {

    let token = Helper.getUserDetails()["token"] as! String

    let auth = "Bearer \(token)"

       let headers: HTTPHeaders = [
           "Authorization" : auth,
           "Content-type": "multipart/form-data"
       ]
       var image:UIImage?
       var dataToBeSend:Data?
       Alamofire.upload(multipartFormData: { (multipartFormData) in
           if let parms=parameters{
               for (key, value) in parms  {
                   multipartFormData.append((value as! String).data(using: String.Encoding.utf8)!, withName: key as String)
               }
           }


           guard let fileData = try? Data(contentsOf: fileURL as URL) else {

               print("There was an error!")
               // return or break
               return
           }

           let filename : String = fileURL.lastPathComponent
           let splitName:[String] = filename.components(separatedBy: ".")
           let name = splitName.first
           let filetype = splitName.last
           if filetype?.uppercased() != "PDF"{
               image=UIImage(data: fileData)
               dataToBeSend = image!.jpegData(compressionQuality: 0.2)!
           }else{
               dataToBeSend=fileData
           }

           if let data = dataToBeSend{
               multipartFormData.append(data, withName: "\(name ?? "name")", fileName: "\(filename)", mimeType: "\(name ?? "name")/\(filetype ?? "jpg")")
           }

       }, usingThreshold:0, to: endUrl, method: .post, headers: headers) { (result) in
        print(result)
           switch result{
           case .success(let upload, _, _):
               upload.responseJSON { response in
                   if let err = response.error{
                       completion?(.failure(err))
                       return
                   }
                   if let value = (try? JSONSerialization.jsonObject(with: response.data!, options: .allowFragments)) as? T {
                       completion?(.success(value))
                   }
               }
           case .failure(let error):
               print("Error in upload: \(error.localizedDescription)")
               completion?(.failure(error))
           }
       }
   }

1 Ответ

0 голосов
/ 04 марта 2020

эта ошибка была вызвана тем, что некоторые изменения в конфигурации сервера, поэтому любой хочет загрузить файл или изображение на сервер, используя alamofire, этот метод работает очень хорошо

...