2014-10-16 9 views
8

मैं अलामोफायर राउटर के साथ फ़ाइल कैसे अपलोड कर सकता हूं? इसके साथ संघर्ष।फ़ाइल अलामोफायर राउटर के साथ अपलोड करें

मुझे भी दिलचस्पी है कि मैं अलामोफायर राउटर के साथ उसी अनुरोध में फ़ाइल और पैरामीटर कैसे अपलोड कर सकता हूं।

धन्यवाद!

उत्तर

0

मैं निम्नलिखित कोड का उपयोग कर एक छवि अपलोड करता हूं। किसी दिए गए फ़ाइल प्रकार के लिए, आप तदनुसार multipartEncoding ब्लॉक समायोजित करने में सक्षम होना चाहिए।

let json: [String : Any] = ["key", "value"] 

let image = UIImage(named: "Something")! 

guard let imageData = UIImagePNGRepresentation(image) else { 
    // We couldn't convert the image into data :(
} 

let multipartEncoding: (MultipartFormData) -> Void = { multipartFormData in 
    multipartFormData.append(imageData, withName: "image", fileName: "image.png", mimeType: "image/png") 
} 

let request = Router.uploadPicture(parameters: json) // This is just a plain POST 

sessionManager.upload(
    multipartFormData: multipartEncoding, 
    with: request, 
    encodingCompletion: { (encodingResult) in 
     switch encodingResult { 
     case .success(let request, _, _): 
      request.validate().responseJSON(completionHandler: { (dataResponse) in 
       if let error = dataResponse.result.error { 
        // Network request failed :(
       } 
       // SUCCESS! 
      }) 
     case .failure(_): 
      // Couldn't encode the image :(
     } 
}) 

यह मान रहा है कि आपका Router ऐसा कुछ दिखता है।

enum Router: URLRequestConvertible { 

    case uploadPicture(parameters: Parameters) 

    static var baseUrl = "https://website.com/" 

    var method: HTTPMethod { 
     switch self { 
     case .uploadPicture(_): 
      return .post 
     } 
    } 

    var path: String { 
     switch self { 
     case .uploadPicture(_): 
      return "api/upload-picture/" 
     } 
    } 

    // MARK: - URLRequestConvertible 

    func asURLRequest() throws -> URLRequest { 

     let url = try Router.baseUrl.asURL().appendingPathComponent(path) 
     var urlRequest = try URLRequest(url: url, method: method) 
     var encodedUrlRequest: URLRequest? 

     switch self { 

     case .uploadPicture(let parameters): 
      encodedUrlRequest = try? JSONEncoding.default.encode(urlRequest, with: parameters) 

     } 

     return encodedUrlRequest ?? urlRequest 
    } 
} 
संबंधित मुद्दे