From 84db43f3b5d3db0a68e4a000cdf293483c963df1 Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Tue, 19 Aug 2025 19:17:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8A=E4=BC=A0=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 122452 -> 123932 bytes wake/View/Components/Upload/Avatar.swift | 243 +++++++++--------- ...{Compression.swift => ImageUploader.swift} | 0 .../Upload/ImageUploaderGetID.swift | 219 +++++++++++++++- 4 files changed, 335 insertions(+), 127 deletions(-) rename wake/View/Components/Upload/{Compression.swift => ImageUploader.swift} (100%) diff --git a/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate b/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate index 79e8ee05c88bc76d047d77714944190cd0cd28e4..314d4094bc754946893562356171be1194727983 100644 GIT binary patch literal 123932 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 diff --git a/wake/View/Components/Upload/Avatar.swift b/wake/View/Components/Upload/Avatar.swift index e85ba83..07f115d 100644 --- a/wake/View/Components/Upload/Avatar.swift +++ b/wake/View/Components/Upload/Avatar.swift @@ -1,52 +1,60 @@ import SwiftUI import PhotosUI -/// 上传结果,包含原图和压缩图的上传信息 -struct UploadResults { - let original: ImageUploaderGetID.UploadResult - let compressed: ImageUploaderGetID.UploadResult +// MARK: - Data Models + +/// 上传进度信息 +public struct UploadProgress { + public let current: Int + public let total: Int + public let progress: Double + public let isOriginal: Bool + + public init(current: Int, total: Int, progress: Double, isOriginal: Bool) { + self.current = current + self.total = total + self.progress = progress + self.isOriginal = isOriginal + } } +/// 上传结果,包含原图和压缩图的上传信息 +public struct UploadResults { + public let original: ImageUploaderGetID.UploadResult + public let compressed: ImageUploaderGetID.UploadResult + + public init(original: ImageUploaderGetID.UploadResult, + compressed: ImageUploaderGetID.UploadResult) { + self.original = original + self.compressed = compressed + } +} + +// MARK: - Photo Picker + /// 照片选择器,封装了系统相册选择功能 -/// 使用UIViewControllerRepresentable包装PHPickerViewController,提供SwiftUI兼容的图片选择界面 struct PhotoPicker: UIViewControllerRepresentable { // MARK: - Properties - - /// 绑定的已选图片数组,用于存储用户选择的图片 @Binding var selectedImages: [UIImage] - - /// 最多可选图片数量,默认为1 let selectionLimit: Int - - /// 图片过滤器,默认为图片类型,可过滤特定类型的媒体 let filter: PHPickerFilter - - /// 图片上传完成回调,返回上传结果或错误 var onImageUploaded: ((Result) -> Void)? + var onUploadProgress: ((UploadProgress) -> Void)? // MARK: - Initialization - - /// 初始化照片选择器 - /// - Parameters: - /// - selectedImages: 绑定的图片数组,用于接收用户选择的图片 - /// - selectionLimit: 最多可选图片数量,默认为1 - /// - filter: 媒体类型过滤器,默认为图片 - /// - onImageUploaded: 图片上传完成后的回调闭包 - init( - selectedImages: Binding<[UIImage]>, - selectionLimit: Int = 1, - filter: PHPickerFilter = .images, - onImageUploaded: ((Result) -> Void)? = nil - ) { + init(selectedImages: Binding<[UIImage]>, + selectionLimit: Int = 1, + filter: PHPickerFilter = .images, + onImageUploaded: ((Result) -> Void)? = nil, + onUploadProgress: ((UploadProgress) -> Void)? = nil) { self._selectedImages = selectedImages self.selectionLimit = selectionLimit self.filter = filter self.onImageUploaded = onImageUploaded + self.onUploadProgress = onUploadProgress } // MARK: - UIViewControllerRepresentable - - /// 创建并返回配置好的PHPickerViewController func makeUIViewController(context: Context) -> PHPickerViewController { var configuration = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared()) configuration.filter = filter @@ -58,42 +66,30 @@ struct PhotoPicker: UIViewControllerRepresentable { return picker } - /// 更新视图控制器(空实现,因为不需要更新) func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {} - /// 创建协调器,用于处理PHPickerViewController的代理方法 func makeCoordinator() -> Coordinator { Coordinator(self) } // MARK: - Coordinator - - /// 协调器类,处理PHPickerViewController的代理方法 class Coordinator: NSObject, PHPickerViewControllerDelegate { - /// 对父视图的弱引用 let parent: PhotoPicker - - /// 图片上传器实例 private let uploader = ImageUploaderGetID() init(_ parent: PhotoPicker) { self.parent = parent } - /// 当用户完成图片选择时调用 func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { - // 清空已选图片 parent.selectedImages.removeAll() - - // 使用DispatchGroup管理多个异步任务 let group = DispatchGroup() - var loadedImages: [Int: UIImage] = [:] // 用于保持图片顺序的字典 + var loadedImages: [Int: UIImage] = [:] var uploadResults: [Int: (original: ImageUploaderGetID.UploadResult?, - compressed: ImageUploaderGetID.UploadResult?)] = [:] + compressed: ImageUploaderGetID.UploadResult?)] = [:] - // 遍历所有选中的图片 for (index, result) in results.enumerated() { - group.enter() // 进入组 + group.enter() if result.itemProvider.canLoadObject(ofClass: UIImage.self) { result.itemProvider.loadObject(ofClass: UIImage.self) { [weak self] (image, error) in @@ -102,134 +98,138 @@ struct PhotoPicker: UIViewControllerRepresentable { return } - // 1. 保存原始图片 loadedImages[index] = image - // 2. 压缩图片(质量压缩到50%) guard let compressedImage = image.jpegData(compressionQuality: 0.5).flatMap(UIImage.init(data:)) else { group.leave() return } - // 3. 上传原图 - self.uploader.uploadImage(image) { [weak self] originalResult in - guard let self = self else { - group.leave() - return - } - - switch originalResult { - case .success(let originalUploadResult): - // 4. 原图上传成功后上传压缩图 - self.uploader.uploadImage(compressedImage) { compressedResult in - defer { group.leave() } - - switch compressedResult { - case .success(let compressedUploadResult): - // 保存两个上传结果 - uploadResults[index] = (originalUploadResult, compressedUploadResult) - print("✅ 原图和压缩图上传成功!") - print("📂 原图信息:") - print(" - 文件ID: \(originalUploadResult.fileId)") - print(" - 文件大小: \(originalUploadResult.fileSize) 字节") - print("📦 压缩图信息:") - print(" - 文件ID: \(compressedUploadResult.fileId)") - print(" - 文件大小: \(compressedUploadResult.fileSize) 字节") - - // 使用MaterialService上传文件信息到后端 - MaterialService.shared.uploadMaterialInfo( - fileId: originalUploadResult.fileId, - previewFileId: compressedUploadResult.fileId - ) { success, errorMessage in - if success { - print("✅ 文件信息上传成功 素材上传成功!!!!!") - } else if let errorMessage = errorMessage { - print("❌ 文件信息上传失败: \(errorMessage)") - } - } - - case .failure(let error): - print("❌ 压缩图上传失败: \(error.localizedDescription)") - uploadResults[index] = (originalUploadResult, nil) - } + self.uploader.uploadImage( + image, + progress: { [weak self] progress in + let progressInfo = UploadProgress( + current: Int(progress * 100), + total: 100, + progress: progress, + isOriginal: true + ) + DispatchQueue.main.async { + self?.parent.onUploadProgress?(progressInfo) + } + print("📤 原图上传进度: \(Int(progress * 100))%") + }, + completion: { [weak self] originalResult in + guard let self = self else { + group.leave() + return } - case .failure(let error): - print("❌ 原图上传失败: \(error.localizedDescription)") - group.leave() + switch originalResult { + case .success(let originalUploadResult): + self.uploader.uploadImage( + compressedImage, + progress: { [weak self] progress in + let progressInfo = UploadProgress( + current: Int(progress * 100), + total: 100, + progress: progress, + isOriginal: false + ) + DispatchQueue.main.async { + self?.parent.onUploadProgress?(progressInfo) + } + print("📊 压缩图上传进度: \(Int(progress * 100))%") + }, + completion: { compressedResult in + defer { group.leave() } + + switch compressedResult { + case .success(let compressedUploadResult): + uploadResults[index] = (originalUploadResult, compressedUploadResult) + print("✅ 原图和压缩图上传成功!") + print("📂 原图信息:") + print(" - 文件ID: \(originalUploadResult.fileId)") + print(" - 文件大小: \(originalUploadResult.fileSize) 字节") + print("📦 压缩图信息:") + print(" - 文件ID: \(compressedUploadResult.fileId)") + print(" - 文件大小: \(compressedUploadResult.fileSize) 字节") + + MaterialService.shared.uploadMaterialInfo( + fileId: originalUploadResult.fileId, + previewFileId: compressedUploadResult.fileId + ) { success, errorMessage in + if success { + print("✅ 文件信息上传成功 素材上传成功!!!!!") + } else if let errorMessage = errorMessage { + print("❌ 文件信息上传失败: \(errorMessage)") + } + } + + case .failure(let error): + print("❌ 压缩图上传失败: \(error.localizedDescription)") + uploadResults[index] = (originalUploadResult, nil) + } + } + ) + + case .failure(let error): + print("❌ 原图上传失败: \(error.localizedDescription)") + group.leave() + } } - } + ) } } else { group.leave() } } - // 所有上传任务完成后的处理 group.notify(queue: .main) { [weak self] in guard let self = self else { return } - // 1. 更新选中的图片(只显示原图) let sortedImages = loadedImages.sorted { $0.key < $1.key }.map { $0.value } self.parent.selectedImages.append(contentsOf: sortedImages) - // 2. 检查是否所有上传都成功 if let firstResult = uploadResults.first?.value, let original = firstResult.original, let compressed = firstResult.compressed { - // 3. 如果成功,返回上传结果 let results = UploadResults(original: original, compressed: compressed) self.parent.onImageUploaded?(.success(results)) } else { - // 4. 如果失败,返回错误 - self.parent.onImageUploaded?(.failure(NSError(domain: "com.wake.upload", - code: -1, - userInfo: [NSLocalizedDescriptionKey: "上传过程中出现错误"]))) + self.parent.onImageUploaded?(.failure(NSError( + domain: "com.wake.upload", + code: -1, + userInfo: [NSLocalizedDescriptionKey: "上传过程中出现错误"] + ))) } - // 5. 关闭图片选择器 picker.dismiss(animated: true) } } } } -// MARK: - AvatarUploader +// MARK: - Avatar Uploader /// 头像上传视图,提供头像选择功能 -/// 封装了头像显示和选择逻辑,支持点击选择新头像 struct AvatarUploader: View { - // MARK: - Properties - - /// 绑定的当前选中头像图片 @Binding var selectedImage: UIImage? - - /// 头像显示尺寸 let size: CGFloat - - /// 上传完成回调,返回上传结果或错误 var onUploadComplete: ((Result) -> Void)? - // MARK: - State - - /// 控制图片选择器的显示状态 @State private var isImagePickerPresented = false - // MARK: - Body - var body: some View { - // 头像按钮,点击后显示图片选择器 Button(action: { isImagePickerPresented = true }) { ZStack { if let selectedImage = selectedImage { - // 显示已选中的头像 Image(uiImage: selectedImage) .resizable() .scaledToFill() .frame(width: size, height: size) .clipShape(RoundedRectangle(cornerRadius: size * 0.1)) } else { - // 默认头像占位视图 Color.gray.opacity(0.1) .frame(width: size, height: size) .overlay( @@ -244,11 +244,10 @@ struct AvatarUploader: View { } } .frame(width: size, height: size) - .contentShape(Rectangle()) // 确保整个区域都可点击 + .contentShape(Rectangle()) } - .buttonStyle(PlainButtonStyle()) // 使用无样式按钮 + .buttonStyle(PlainButtonStyle()) .sheet(isPresented: $isImagePickerPresented) { - // 显示图片选择器 PhotoPicker( selectedImages: Binding( get: { [selectedImage].compactMap { $0 } }, @@ -256,10 +255,12 @@ struct AvatarUploader: View { selectedImage = images.first } ), - selectionLimit: 1, // 限制只能选择一张图片 + selectionLimit: 1, onImageUploaded: { result in - // 图片上传完成后的处理 onUploadComplete?(result) + }, + onUploadProgress: { progress in + print("上传进度:\(progress.current)/\(progress.total),进度:\(progress.progress * 100)%") } ) } diff --git a/wake/View/Components/Upload/Compression.swift b/wake/View/Components/Upload/ImageUploader.swift similarity index 100% rename from wake/View/Components/Upload/Compression.swift rename to wake/View/Components/Upload/ImageUploader.swift diff --git a/wake/View/Components/Upload/ImageUploaderGetID.swift b/wake/View/Components/Upload/ImageUploaderGetID.swift index 4ea82f4..6eb056b 100644 --- a/wake/View/Components/Upload/ImageUploaderGetID.swift +++ b/wake/View/Components/Upload/ImageUploaderGetID.swift @@ -69,8 +69,13 @@ public class ImageUploaderGetID: ObservableObject { /// 上传图片到服务器 /// - Parameters: /// - image: 要上传的图片 - /// - completion: 完成回调,返回Result类型的结果 - public func uploadImage(_ image: UIImage, completion: @escaping (Result) -> Void) { + /// - progress: 上传进度回调 (0.0 到 1.0) + /// - completion: 完成回调 + public func uploadImage( + _ image: UIImage, + progress: @escaping (Double) -> Void, + completion: @escaping (Result) -> Void + ) { print("🔄 开始准备上传图片...") // 1. 转换图片为Data @@ -85,11 +90,37 @@ public class ImageUploaderGetID: ObservableObject { getUploadURL(for: imageData) { [weak self] result in switch result { case .success((let fileId, let uploadURL)): - // 3. 确认上传 - self?.confirmUpload(fileId: fileId, fileName: "avatar_\(UUID().uuidString).jpg", fileSize: imageData.count) { confirmResult in - completion(confirmResult) - } + print("📤 获取到上传URL,开始上传文件...") + + // 3. 上传文件 + _ = self?.uploadFile( + fileData: imageData, + to: uploadURL, + mimeType: "image/jpeg", + onProgress: { uploadProgress in + print("📊 上传进度: \(Int(uploadProgress * 100))%") + progress(uploadProgress) + }, + completion: { uploadResult in + switch uploadResult { + case .success: + // 4. 确认上传 + self?.confirmUpload( + fileId: fileId, + fileName: "avatar_\(UUID().uuidString).jpg", + fileSize: imageData.count, + completion: completion + ) + + case .failure(let error): + print("❌ 文件上传失败: \(error.localizedDescription)") + completion(.failure(error)) + } + } + ) + case .failure(let error): + print("❌ 获取上传URL失败: \(error.localizedDescription)") completion(.failure(error)) } } @@ -211,6 +242,182 @@ public class ImageUploaderGetID: ObservableObject { task.resume() } + + /// 上传文件到指定URL + /// - Parameters: + /// - fileData: 要上传的文件数据 + /// - uploadURL: 上传URL + /// - mimeType: 文件MIME类型 + /// - onProgress: 进度回调,0.0 到 1.0 + /// - completion: 完成回调 + public func uploadFile( + fileData: Data, + to uploadURL: URL, + mimeType: String = "application/octet-stream", + onProgress: @escaping (Double) -> Void, + completion: @escaping (Result) -> Void + ) -> URLSessionUploadTask { + var request = URLRequest(url: uploadURL) + request.httpMethod = "PUT" + request.setValue(mimeType, forHTTPHeaderField: "Content-Type") + + let task = session.uploadTask( + with: request, + from: fileData + ) { _, response, error in + if let error = error { + completion(.failure(error)) + return + } + + guard let httpResponse = response as? HTTPURLResponse, + (200...299).contains(httpResponse.statusCode) else { + let statusCode = (response as? HTTPURLResponse)?.statusCode ?? -1 + completion(.failure(UploadError.serverError("上传失败,状态码: \(statusCode)"))) + return + } + + completion(.success(())) + } + + // 添加进度观察 + if #available(iOS 11.0, *) { + let progressObserver = task.progress.observe(\.fractionCompleted) { (progressValue, _) in + DispatchQueue.main.async { + onProgress(progressValue.fractionCompleted) + } + } + + task.addCompletionHandler { [weak task] in + progressObserver.invalidate() + task?.progress.cancel() + } + } else { + // Fallback for earlier iOS versions + var lastProgress: Double = 0 + let timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { timer in + let bytesSent = task.countOfBytesSent + let totalBytes = task.countOfBytesExpectedToSend + let currentProgress = totalBytes > 0 ? Double(bytesSent) / Double(totalBytes) : 0 + + // 只有当进度有显著变化时才回调,避免频繁更新UI + if abs(currentProgress - lastProgress) > 0.01 || currentProgress >= 1.0 { + lastProgress = currentProgress + DispatchQueue.main.async { + onProgress(min(currentProgress, 1.0)) + } + } + + if currentProgress >= 1.0 { + timer.invalidate() + } + } + + task.addCompletionHandler { + timer.invalidate() + } + } + + task.resume() + return task + } + + // MARK: - 文件上传状态 + + /// 文件上传状态 + public struct FileStatus { + public let file: Data + public var status: UploadStatus + public var progress: Double + + public enum UploadStatus { + case pending + case uploading + case completed + case failed(Error) + } + + public init(file: Data, status: UploadStatus = .pending, progress: Double = 0) { + self.file = file + self.status = status + self.progress = progress + } + } +} + +// MARK: - URLSessionTask 扩展 + +private class TaskObserver: NSObject { + private weak var task: URLSessionTask? + private var handlers: [() -> Void] = [] + + init(task: URLSessionTask) { + self.task = task + super.init() + task.addObserver(self, forKeyPath: #keyPath(URLSessionTask.state), options: .new, context: nil) + } + + func addHandler(_ handler: @escaping () -> Void) { + handlers.append(handler) + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + guard keyPath == #keyPath(URLSessionTask.state), + let task = task, + task.state == .completed else { + return + } + + // 调用所有完成处理器 + DispatchQueue.main.async { [weak self] in + self?.handlers.forEach { $0() } + self?.cleanup() + } + } + + private func cleanup() { + task?.removeObserver(self, forKeyPath: #keyPath(URLSessionTask.state)) + handlers.removeAll() + } + + deinit { + cleanup() + } +} + +private extension URLSessionTask { + private static var taskObserverKey: UInt8 = 0 + + private var taskObserver: TaskObserver? { + get { + return objc_getAssociatedObject(self, &Self.taskObserverKey) as? TaskObserver + } + set { + objc_setAssociatedObject(self, &Self.taskObserverKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + + func addCompletionHandler(_ handler: @escaping () -> Void) { + if #available(iOS 11.0, *) { + if let observer = taskObserver { + observer.addHandler(handler) + } else { + let observer = TaskObserver(task: self) + observer.addHandler(handler) + taskObserver = observer + } + } else { + // iOS 11 以下版本使用通知 + let name = NSNotification.Name("TaskCompleted\(self.taskIdentifier)") + NotificationCenter.default.addObserver( + forName: name, + object: self, + queue: .main + ) { _ in + handler() + } + } + } } // MARK: - 响应模型