|
@@ -74,40 +74,6 @@ extension TSNetworkManager {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// /// 通用 POST Stream 请求
|
|
|
-// /// - Parameters:
|
|
|
-// /// - endpoint: 接口路径
|
|
|
-// /// - parameters: 请求参数
|
|
|
-// /// - responseType: 响应数据模型(可选)
|
|
|
-// /// - completion: 请求完成的回调
|
|
|
-// func postStream<T: TSBaseModel>(
|
|
|
-// urlType: TSNeURLType,
|
|
|
-// parameters: [String: Any]? = nil,
|
|
|
-// responseType: T.Type? = nil,
|
|
|
-// streamHandler:@escaping (String) -> Void,
|
|
|
-// completion: @escaping (Result<Any, Error>) -> Void
|
|
|
-// ) -> StreamPostRequest{
|
|
|
-// let urlString = urlType.getUrlString()
|
|
|
-//
|
|
|
-// let streamRequest = StreamPostRequest(url: URL(string: urlString)!, parameters: parameters) { data in
|
|
|
-// if let string = String(data: data, encoding: .utf8) {
|
|
|
-// print("Received chunk: \(string)")
|
|
|
-// streamHandler(string)
|
|
|
-// }
|
|
|
-// } completionHandler: { error in
|
|
|
-// if let error = error {
|
|
|
-// print("Request failed with error: \(error)")
|
|
|
-// completion(.failure(error))
|
|
|
-// } else {
|
|
|
-// print("Request completed successfully.")
|
|
|
-// completion(.success("success"))
|
|
|
-// }
|
|
|
-// }
|
|
|
-// streamRequest.startRequest()
|
|
|
-// return streamRequest
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
/// 通用 POST Stream 请求
|
|
|
/// - Parameters:
|
|
|
/// - endpoint: 接口路径
|
|
@@ -151,5 +117,60 @@ extension TSNetworkManager {
|
|
|
|
|
|
}
|
|
|
|
|
|
+extension TSNetworkManager {
|
|
|
+
|
|
|
+ func uploadImage(
|
|
|
+ upLoadImage:UIImage,
|
|
|
+ maxKb:Int,
|
|
|
+ progressHandler: @escaping (Float) -> Void, // 上传进度回调
|
|
|
+ completion: @escaping (Any?, Error?) -> Void)
|
|
|
+ -> Request?{
|
|
|
+
|
|
|
+ guard let imageData = TSImageCompress.compressImageToTargetSize(upLoadImage, targetSizeKB: maxKb, preserveTransparency: false) else {
|
|
|
+ completion(nil,NSError(domain: "image nil", code: 0))
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
+ var dataArray:[[String:Any]] = []
|
|
|
+ if upLoadImage.hasAlphaChannel(){
|
|
|
+ dataArray = [
|
|
|
+ ["data": imageData,
|
|
|
+ "fieldName": "file", // 字段名
|
|
|
+ "fileName": "image.png", // 文件名
|
|
|
+ "mimeType": "image/png" // MIME 类型
|
|
|
+ ]
|
|
|
+ ]
|
|
|
+ }else {
|
|
|
+ dataArray = [
|
|
|
+ ["data": imageData,
|
|
|
+ "fieldName": "file", // 字段名
|
|
|
+ "fileName": "image.jpeg", // 文件名
|
|
|
+ "mimeType": "image/jpeg" // MIME 类型
|
|
|
+ ]
|
|
|
+ ]
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+ return TSNetworkShared.uploadData(
|
|
|
+ urlType: .upload,
|
|
|
+ dataArray: dataArray,
|
|
|
+ progressHandler: { progress in
|
|
|
+ progressHandler(progress)
|
|
|
+ },completion: { [weak self] result in
|
|
|
+ guard let self = self else { return }
|
|
|
+ switch result {
|
|
|
+ case .success(let data):
|
|
|
+ if let dataDict = data as? [String:Any] ,
|
|
|
+ dataDict.safeInt(forKey: "code") == 200,
|
|
|
+ let picUrl = dataDict["result"] as? String{
|
|
|
+ completion(picUrl,nil)
|
|
|
+ }else{
|
|
|
+ let error = NSError(domain: "Service exception", code: 0)
|
|
|
+ completion(nil,error)
|
|
|
+ }
|
|
|
+ case .failure(let error):
|
|
|
+ completion(nil,error)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+}
|