From bcf7543fca9c78d1a33249fe12393490c30d1eaa Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Wed, 20 Aug 2025 14:11:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E5=BC=A0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 138500 -> 143339 bytes wake/Models/UploadModels.swift | 57 ++++ .../Upload/MultiImageUploader.swift | 259 ++++++++++++++++ .../Examples/ImageUploadExampleView.swift | 284 ++++++++++++++++++ wake/WakeApp.swift | 4 +- 5 files changed, 603 insertions(+), 1 deletion(-) create mode 100644 wake/Models/UploadModels.swift create mode 100644 wake/View/Components/Upload/MultiImageUploader.swift create mode 100644 wake/View/Examples/ImageUploadExampleView.swift diff --git a/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate b/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate index c71bd2e621fbdd1d1af59df2bd072e67fd13b739..115a7fb40d30cc8cc16fd75f39b547725b56b2b3 100644 GIT binary patch literal 143339 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 z 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 literal 138500 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

A&zjKD_p}oE$(oS2e`Ku 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 J|0^Eb`Y-P}$ol{Q diff --git a/wake/Models/UploadModels.swift b/wake/Models/UploadModels.swift new file mode 100644 index 0000000..336653e --- /dev/null +++ b/wake/Models/UploadModels.swift @@ -0,0 +1,57 @@ +import SwiftUI + +/// 上传状态 +public enum UploadStatus: Equatable { + case idle + case uploading(progress: Double) + case success + case failure(Error) + + public var isUploading: Bool { + if case .uploading = self { return true } + return false + } + + public var progress: Double { + if case let .uploading(progress) = self { return progress } + return 0 + } + + public static func == (lhs: UploadStatus, rhs: UploadStatus) -> Bool { + switch (lhs, rhs) { + case (.idle, .idle): + return true + case let (.uploading(lhsProgress), .uploading(rhsProgress)): + // 使用近似比较来处理浮点数的精度问题 + return abs(lhsProgress - rhsProgress) < 0.001 + case (.success, .success): + return true + case (.failure, .failure): + // 对于错误类型,我们简单地认为它们不相等,因为比较 Error 对象比较复杂 + // 如果需要更精确的比较,可以在这里添加具体实现 + return false + default: + return false + } + } +} + +/// 上传结果 +public struct UploadResult: Identifiable, Equatable { + public let id = UUID() + public var fileId: String + public var previewFileId: String + public let image: UIImage + public var status: UploadStatus = .idle + + public init(fileId: String = "", previewFileId: String = "", image: UIImage, status: UploadStatus = .idle) { + self.fileId = fileId + self.previewFileId = previewFileId + self.image = image + self.status = status + } + + public static func == (lhs: UploadResult, rhs: UploadResult) -> Bool { + lhs.id == rhs.id + } +} diff --git a/wake/View/Components/Upload/MultiImageUploader.swift b/wake/View/Components/Upload/MultiImageUploader.swift new file mode 100644 index 0000000..3598ef4 --- /dev/null +++ b/wake/View/Components/Upload/MultiImageUploader.swift @@ -0,0 +1,259 @@ +import SwiftUI +import PhotosUI +import os.log + +@available(iOS 16.0, *) +public struct MultiImageUploader: View { + @State private var selectedImages: [UIImage] = [] + @State private var uploadResults: [UploadResult] = [] + @State private var isUploading = false + @State private var showingImagePicker = false + @State private var uploadProgress: [UUID: Double] = [:] // 跟踪每个上传任务的进度 + + private let maxSelection: Int + private let onUploadComplete: ([UploadResult]) -> Void + private let uploadService = ImageUploadService.shared + private let logger = Logger(subsystem: "com.yourapp.uploader", category: "MultiImageUploader") + + public init( + maxSelection: Int = 10, + onUploadComplete: @escaping ([UploadResult]) -> Void + ) { + self.maxSelection = maxSelection + self.onUploadComplete = onUploadComplete + } + + public var body: some View { + VStack(spacing: 16) { + // 上传按钮 + Button(action: { + showingImagePicker = true + }) { + Label("选择图片", systemImage: "photo.on.rectangle") + .font(.headline) + .foregroundColor(.white) + .padding() + .frame(maxWidth: .infinity) + .background(Color.blue) + .cornerRadius(10) + } + .padding(.horizontal) + .sheet(isPresented: $showingImagePicker) { + ImagePicker(images: $selectedImages, selectionLimit: maxSelection) { + // 当选择完成时,开始上传 + if !selectedImages.isEmpty { + uploadImages() + } + } + } + + // 上传进度和图片网格 + ScrollView { + LazyVStack(spacing: 16) { + ForEach($uploadResults) { $result in + VStack(spacing: 8) { + // 图片预览 + Image(uiImage: result.image) + .resizable() + .scaledToFill() + .frame(height: 200) + .frame(maxWidth: .infinity) + .clipped() + .cornerRadius(8) + + // 上传进度条 + if case .uploading = result.status { + ProgressView(value: uploadProgress[result.id] ?? 0, total: 1.0) + .progressViewStyle(LinearProgressViewStyle()) + .padding(.horizontal) + + Text("上传中: \(Int((uploadProgress[result.id] ?? 0) * 100))%") + .font(.caption) + .foregroundColor(.secondary) + } else if case .success = result.status { + HStack { + Image(systemName: "checkmark.circle.fill") + .foregroundColor(.green) + Text("上传成功") + .font(.caption) + .foregroundColor(.green) + } + } else if case .failure = result.status { + HStack { + Image(systemName: "exclamationmark.triangle.fill") + .foregroundColor(.red) + Text("上传失败") + .font(.caption) + .foregroundColor(.red) + } + } + } + .padding() + .background(Color(.systemBackground)) + .cornerRadius(12) + .shadow(radius: 2) + } + } + .padding() + } + + // 上传按钮 + if !selectedImages.isEmpty && !isUploading { + Button(action: uploadImages) { + Text("开始上传 (\(selectedImages.count)张)") + .font(.headline) + .foregroundColor(.white) + .padding() + .frame(maxWidth: .infinity) + .background(Color.blue) + .cornerRadius(10) + } + .padding(.horizontal) + .padding(.bottom) + } + } + .background(Color(.systemGroupedBackground)) + } + + private func uploadImages() { + guard !isUploading else { return } + + isUploading = true + let group = DispatchGroup() + var results = selectedImages.map { image in + UploadResult(fileId: "", previewFileId: "", image: image, status: .uploading(progress: 0)) + } + + // 更新UI显示上传中的状态 + uploadResults = results + + // 创建并发的DispatchQueue + let uploadQueue = DispatchQueue(label: "com.wake.uploadQueue", attributes: .concurrent) + let semaphore = DispatchSemaphore(value: 3) // 限制并发数为3 + + for (index, image) in selectedImages.enumerated() { + semaphore.wait() + group.enter() + + uploadQueue.async { + let resultId = results[index].id + + // 更新状态为上传中 + DispatchQueue.main.async { + if let idx = results.firstIndex(where: { $0.id == resultId }) { + results[idx].status = .uploading(progress: 0) + uploadProgress[resultId] = 0 + uploadResults = results + } + } + + // 上传原图 + uploadService.uploadImage(image, progress: { progress in + DispatchQueue.main.async { + uploadProgress[resultId] = progress.progress + if let idx = results.firstIndex(where: { $0.id == resultId }) { + results[idx].status = .uploading(progress: progress.progress) + uploadResults = results + } + } + }) { uploadResult in + defer { + semaphore.signal() + group.leave() + } + + DispatchQueue.main.async { + if let idx = results.firstIndex(where: { $0.id == resultId }) { + switch uploadResult { + case .success(let uploadResult): + // 上传成功,更新结果 + results[idx].fileId = uploadResult.fileId + // 使用空字符串作为 previewFileId,因为 ImageUploaderGetID.UploadResult 没有这个属性 + results[idx].previewFileId = "" + results[idx].status = .success + uploadResults = results + + logger.info("图片上传成功: \(uploadResult.fileId)") + + case .failure(let error): + // 上传失败 + results[idx].status = .failure(error) + uploadResults = results + logger.error("图片上传失败: \(error.localizedDescription)") + } + } + } + } + } + } + + // 所有上传任务完成后的处理 + group.notify(queue: .main) { + self.isUploading = false + let successCount = results.filter { $0.status == .success }.count + logger.info("上传完成,成功: \(successCount)/\(results.count)") + self.onUploadComplete(results) + } + } +} + +// MARK: - 图片选择器 +@available(iOS 14.0, *) +struct ImagePicker: UIViewControllerRepresentable { + @Binding var images: [UIImage] + var selectionLimit: Int = 10 + var onDismiss: (() -> Void)? + + func makeUIViewController(context: Context) -> PHPickerViewController { + var config = PHPickerConfiguration(photoLibrary: .shared()) + config.filter = .images + config.selectionLimit = selectionLimit + config.preferredAssetRepresentationMode = .current + + let picker = PHPickerViewController(configuration: config) + picker.delegate = context.coordinator + return picker + } + + func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {} + + func makeCoordinator() -> Coordinator { + Coordinator(self) + } + + class Coordinator: NSObject, PHPickerViewControllerDelegate { + let parent: ImagePicker + + init(_ parent: ImagePicker) { + self.parent = parent + } + + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + picker.dismiss(animated: true) + + let group = DispatchGroup() + var newImages: [UIImage] = [] + + for result in results { + group.enter() + let itemProvider = result.itemProvider + + if itemProvider.canLoadObject(ofClass: UIImage.self) { + itemProvider.loadObject(ofClass: UIImage.self) { [weak self] (image, error) in + if let image = image as? UIImage { + newImages.append(image) + } + group.leave() + } + } else { + group.leave() + } + } + + group.notify(queue: .main) { + self.parent.images = newImages + self.parent.onDismiss?() + } + } + } +} \ No newline at end of file diff --git a/wake/View/Examples/ImageUploadExampleView.swift b/wake/View/Examples/ImageUploadExampleView.swift new file mode 100644 index 0000000..37393de --- /dev/null +++ b/wake/View/Examples/ImageUploadExampleView.swift @@ -0,0 +1,284 @@ +import SwiftUI +import os.log + +/// 多图上传示例视图 +/// 展示如何使用 MultiImageUploader 组件实现多图上传功能 +@available(iOS 16.0, *) +struct MultiImageUploadExampleView: View { + // MARK: - 状态属性 + + @State private var uploadResults: [UploadResult] = [] + @State private var isShowingUploader = false + @State private var showUploadAlert = false + @State private var alertMessage = "" + @State private var isUploading = false + + private let logger = Logger(subsystem: "com.yourapp.uploader", category: "MultiImageUploadExample") + + // MARK: - 视图主体 + + var body: some View { + NavigationView { + VStack(spacing: 16) { + // 上传按钮和状态 + uploadButton + + // 上传统计信息 + if !uploadResults.isEmpty { + uploadStatsView + } + + // 上传进度列表 + uploadProgressList + + Spacer() + } + .navigationTitle("多图上传示例") + .toolbar { + // 清空按钮 + if !uploadResults.isEmpty && !isUploading { + Button("清空") { + withAnimation { + uploadResults.removeAll() + } + } + } + } + .sheet(isPresented: $isShowingUploader) { + // 多图上传组件 + MultiImageUploader( + maxSelection: 10 + ) { results in + processUploadResults(results) + } + } + .alert("上传结果", isPresented: $showUploadAlert) { + Button("确定", role: .cancel) { } + } message: { + Text(alertMessage) + } + } + } + + // MARK: - 子视图 + + /// 上传按钮 + private var uploadButton: some View { + Button(action: { isShowingUploader = true }) { + Label("选择并上传图片", systemImage: "photo.on.rectangle.angled") + .font(.headline) + .foregroundColor(.white) + .padding() + .frame(maxWidth: .infinity) + .background(Color.blue) + .cornerRadius(10) + } + .padding(.horizontal) + .padding(.top) + } + + /// 上传统计信息 + private var uploadStatsView: some View { + VStack(alignment: .leading, spacing: 8) { + let successCount = uploadResults.filter { $0.status == .success }.count + let inProgressCount = uploadResults.filter { + if case .uploading = $0.status { return true } + return false + }.count + let failedCount = uploadResults.count - successCount - inProgressCount + + Text("上传统计") + .font(.headline) + + HStack { + StatView( + value: "\(uploadResults.count)", + label: "总数量", + color: .blue + ) + + StatView( + value: "\(successCount)", + label: "成功", + color: .green + ) + + StatView( + value: "\(inProgressCount)", + label: "上传中", + color: .orange + ) + + StatView( + value: "\(failedCount)", + label: "失败", + color: .red + ) + } + + // 总进度条 + if inProgressCount > 0 { + let progress = uploadResults.reduce(0.0) { result, uploadResult in + if case .uploading(let progress) = uploadResult.status { + return result + progress + } else if uploadResult.status == .success { + return result + 1.0 + } + return result + } / Double(uploadResults.count) + + VStack(alignment: .leading, spacing: 4) { + Text("总进度: \(Int(progress * 100))%") + .font(.subheadline) + ProgressView(value: progress) + .progressViewStyle(LinearProgressViewStyle(tint: .blue)) + } + .padding(.top, 8) + } + } + .padding() + .background(Color(.systemGray6)) + .cornerRadius(10) + .padding(.horizontal) + } + + /// 上传进度列表 + private var uploadProgressList: some View { + List { + ForEach($uploadResults) { $result in + VStack(alignment: .leading, spacing: 8) { + // 图片缩略图和状态 + HStack { + // 图片缩略图 + Image(uiImage: result.image) + .resizable() + .scaledToFill() + .frame(width: 60, height: 60) + .clipped() + .cornerRadius(8) + .overlay( + RoundedRectangle(cornerRadius: 8) + .stroke(borderColor(for: result.status), lineWidth: 1) + ) + + // 状态和进度 + VStack(alignment: .leading, spacing: 4) { + Text("图片 \(result.id.uuidString.prefix(8))...") + .font(.subheadline) + + switch result.status { + case .uploading(let progress): + VStack(alignment: .leading, spacing: 4) { + Text("上传中: \(Int(progress * 100))%") + .font(.caption) + ProgressView(value: progress) + .progressViewStyle(LinearProgressViewStyle()) + } + case .success: + HStack { + Image(systemName: "checkmark.circle.fill") + .foregroundColor(.green) + Text("上传成功") + .font(.caption) + .foregroundColor(.green) + } + case .failure(let error): + HStack { + Image(systemName: "exclamationmark.triangle.fill") + .foregroundColor(.red) + Text("上传失败: \(error.localizedDescription)") + .font(.caption) + .foregroundColor(.red) + } + case .idle: + Text("等待上传...") + .font(.caption) + .foregroundColor(.secondary) + } + } + + Spacer() + } + .padding(.vertical, 4) + } + .padding(.vertical, 8) + .listRowSeparator(.hidden) + } + } + .listStyle(PlainListStyle()) + .animation(.easeInOut, value: uploadResults) + } + + // MARK: - 辅助方法 + + /// 获取状态对应的边框颜色 + private func borderColor(for status: UploadStatus) -> Color { + switch status { + case .success: return .green + case .failure: return .red + case .uploading: return .blue + case .idle: return .gray + } + } + + /// 处理上传结果 + private func processUploadResults(_ results: [UploadResult]) { + // 更新状态 + isUploading = results.contains { result in + if case .uploading = result.status { return true } + return false + } + + // 更新结果 + withAnimation { + uploadResults = results + isShowingUploader = false + } + + // 检查是否全部完成 + let allFinished = !results.contains { result in + if case .uploading = result.status { return true } + if case .idle = result.status { return true } + return false + } + + if allFinished { + let successCount = results.filter { $0.status == .success }.count + let totalCount = results.count + alertMessage = "上传完成\n成功: \(successCount)/\(totalCount)" + showUploadAlert = true + isUploading = false + + logger.info("上传完成,成功: \(successCount)/\(totalCount)") + } + } +} + +// MARK: - 子视图 + +/// 统计信息视图 +private struct StatView: View { + let value: String + let label: String + let color: Color + + var body: some View { + VStack { + Text(value) + .font(.title3.bold()) + .foregroundColor(color) + Text(label) + .font(.caption) + .foregroundColor(.secondary) + } + .frame(maxWidth: .infinity) + } +} + +// MARK: - 预览 +@available(iOS 16.0, *) +struct MultiImageUploadExampleView_Previews: PreviewProvider { + static var previews: some View { + MultiImageUploadExampleView() + } +} \ No newline at end of file diff --git a/wake/WakeApp.swift b/wake/WakeApp.swift index 3d1766c..13a58cf 100644 --- a/wake/WakeApp.swift +++ b/wake/WakeApp.swift @@ -44,7 +44,9 @@ struct WakeApp: App { // 根据登录状态显示不同视图 if authState.isAuthenticated { // 已登录:显示userInfo页面 - UserInfo() + // UserInfo() + // .environmentObject(authState) + MultiImageUploadExampleView() .environmentObject(authState) } else { // 未登录:显示登录界面