From e2f42aca41c3c961b2f3238f02f237542b22ff86 Mon Sep 17 00:00:00 2001 From: dklt Date: Fri, 16 Jan 2026 12:46:35 +0800 Subject: [PATCH] fix: ios add uploadTask server-response to resolve(result) --- ios/Utils/Uploader.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ios/Utils/Uploader.swift b/ios/Utils/Uploader.swift index f9f21abb..487cb133 100644 --- a/ios/Utils/Uploader.swift +++ b/ios/Utils/Uploader.swift @@ -30,6 +30,7 @@ class Uploader : NSObject, URLSessionTaskDelegate{ var uploadResolvers: [String: RCTPromiseResolveBlock] = [:] var uploadRejectors: [String: RCTPromiseRejectBlock] = [:] var currentTask: URLSessionDataTask? + var storage:[Int:Data] = [:] private lazy var taskManager = UrlTaskManager() func upload(filePath: String, options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void { @@ -123,6 +124,8 @@ class Uploader : NSObject, URLSessionTaskDelegate{ guard let uuid = session.configuration.identifier else {return} guard let reject = uploadRejectors[uuid] else{return} guard let resolve = uploadResolvers[uuid] else{return} + guard let data = self.storage[task.taskIdentifier], + let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] else {return} guard error == nil else { reject("failed", "Upload Failed", error) uploadRejectors[uuid] = nil @@ -136,12 +139,18 @@ class Uploader : NSObject, URLSessionTaskDelegate{ return; } - let result: [String : Any] = ["status": response.statusCode, "headers": response.allHeaderFields, "body": ""] + let result: [String : Any] = ["status": response.statusCode, "headers": response.allHeaderFields, "body": json] resolve(result) uploadResolvers[uuid] = nil + self.storage[task.taskIdentifier] = nil } + + public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { + self.storage[dataTask.taskIdentifier] = data + } + func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) { guard let uuid = session.configuration.identifier else {return}