簡體   English   中英

使用alamofire上傳將圖像上傳到AWS S3

[英]Upload image to AWS S3 using alamofire upload

我正在嘗試使用上載功能將jpeg圖像上載到AWS。 但是我收到以下錯誤:

nw_endpoint_handler_add_write_request [29.1 52.92.250.6:443 failed socket-flow (satisfied)] cannot accept write requests

一些幫助將很有用。 這是我正在使用的代碼(參數的類型為Data)

let request = Alamofire.upload(params, to: url, method: .put, headers: ["Content-Type":"image/jpeg"])

        request.responseJSON { (responseJson) in
            switch responseJson.result {
            case .success:
                print("Success: \(responseJson.result.value)")
                break
            case .failure:
                print("Call failed: \(responseJson.result.value)")
                break
            default:
                print("____")
            }
        }

最好使用Amazon自己的SDK來執行此操作。

http://docs.aws.amazon.com/mobile/sdkforios/developerguide/s3transfermanager.html

試試這個:

Swift 3.x:

 func uploadImageWith(parameter params:Dictionary<String,String>,image:UIImage?,handler:@escaping ((Dictionary<String,Any>?) -> Void)) {
       Alamofire.upload(multipartFormData: { (multipartFormData) in
        for (key, value) in params {
            multipartFormData.append(value.data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: key)
        }
        if image != nil {
            if let imgData = UIImageJPEGRepresentation(image!, 0.5) {
                multipartFormData.append(imgData, withName: "photo_upload", fileName: "file.png", mimeType: "image/png")
            }
        }
       }, to: "http://") { (encodingResult) in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                switch response.result {
                case .success:
                    if let jsonDict = response.result.value as? Dictionary<String,Any> {
                        print("Json Response: \(jsonDict)")
                        handler(jsonDict)
                        print(jsonDict,(response.response!.statusCode))
                    }
                    else{
                        print(response.response!.statusCode)
                        handler(nil)
                    }
                    if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
                        print("Server Response: \(utf8Text)") // original server data as UTF8 string
                    }
                    break
                case .failure(let error):
                    print(response.response!.statusCode)
                    print_debug(error)
                    handler(nil)
                    break
                }
            }
        case .failure(let encodingError):
            print(encodingError)
        }

        }
    }

用法:

uploadImageWith(parameter: ["key":"value"], image: UIImage(named:"demo")) { (response) in
      if response != nil {
          print(response)
      } else {
          print("Something went wrong")
      }            
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM