diff --git a/android/src/main/java/com/getcapacitor/plugin/http/FormUploader.java b/android/src/main/java/com/getcapacitor/plugin/http/FormUploader.java index e9a4714f..512f2f0c 100644 --- a/android/src/main/java/com/getcapacitor/plugin/http/FormUploader.java +++ b/android/src/main/java/com/getcapacitor/plugin/http/FormUploader.java @@ -131,9 +131,13 @@ public void addFilePart(String fieldName, File uploadFile, JSObject data) throws try { Object value = data.get(key); - if (!(value instanceof String)) continue; - - appendFieldToWriter(key, value.toString()); + if (value instanceof String) { + appendFieldToWriter(key, value.toString()); + } else if (value instanceof String[]) { + for (childValue : value) { + appendFieldToWriter(key, childValue.toString()); + } + } } catch (JSONException e) { e.printStackTrace(); } diff --git a/ios/Plugin/HttpRequestHandler.swift b/ios/Plugin/HttpRequestHandler.swift index d3d5f26d..a493a83e 100644 --- a/ios/Plugin/HttpRequestHandler.swift +++ b/ios/Plugin/HttpRequestHandler.swift @@ -123,9 +123,6 @@ class HttpRequestHandler { } private static func generateMultipartForm(_ url: URL, _ name: String, _ boundary: String, _ body: [String:Any]) throws -> Data { - let strings: [String: String] = body.compactMapValues { any in - any as? String - } var data = Data() @@ -139,10 +136,18 @@ class HttpRequestHandler { using: .utf8)!) data.append("Content-Type: \(mimeType)\r\n\r\n".data(using: .utf8)!) data.append(fileData) - strings.forEach { key, value in - data.append("\r\n--\(boundary)\r\n".data(using: .utf8)!) - data.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!) - data.append(value.data(using: .utf8)!) + body.forEach { key, value in + if let stringArray = value as? [String] { + for item in stringArray { + data.append("\r\n--\(boundary)\r\n".data(using: .utf8)!) + data.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!) + data.append(item.data(using: .utf8)!) + } + } else { + data.append("\r\n--\(boundary)\r\n".data(using: .utf8)!) + data.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!) + data.append((value as! String).data(using: .utf8)!) + } } data.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)