From 3a0ea7c8be630343bb205acf54fd6751b7715059 Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Thu, 21 Aug 2025 09:57:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A1=B9=E7=9B=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=95=B4=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 156445 -> 154366 bytes ...ploader.swift => ImageMultiUploader.swift} | 0 .../Components/Upload/MaterialService.swift | 65 ------- wake/View/Components/Upload/MediaPicker.swift | 111 +++++++----- .../Upload/MediaPickerWithLogger.swift | 168 ------------------ .../Upload}/MediaUpload.swift | 2 +- .../Components/Upload/MediaUploader.swift | 138 -------------- wake/View/Components/Upload/Upload.swift | 0 wake/View/Components/Upload/VideoPicker.swift | 88 --------- wake/View/Examples/MediaDemo.swift | 2 +- 10 files changed, 70 insertions(+), 504 deletions(-) rename wake/View/Components/Upload/{MultiImageUploader.swift => ImageMultiUploader.swift} (100%) delete mode 100644 wake/View/Components/Upload/MaterialService.swift delete mode 100644 wake/View/Components/Upload/MediaPickerWithLogger.swift rename wake/View/{Examples => Components/Upload}/MediaUpload.swift (99%) delete mode 100644 wake/View/Components/Upload/MediaUploader.swift delete mode 100644 wake/View/Components/Upload/Upload.swift delete mode 100644 wake/View/Components/Upload/VideoPicker.swift diff --git a/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate b/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate index 480b71c418509ad44de7ae9baa3b937b4675f674..f0776a16c3043bae3fa61fd4e73877a0c298a13d 100644 GIT binary patch literal 154366 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 Cz!Ql8 literal 156445 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 Void) { - - let materialData: [String: Any] = [ - "material": [ - "file_id": fileId, - "preview_file_id": previewFileId - ] - ] - - guard let url = URL(string: "\(APIConfig.baseURL)/material") else { - completion(false, "无效的URL") - return - } - - var request = URLRequest(url: url) - request.httpMethod = "POST" - request.allHTTPHeaderFields = APIConfig.authHeaders - request.setValue("application/json", forHTTPHeaderField: "Content-Type") - - do { - request.httpBody = try JSONSerialization.data(withJSONObject: materialData) - - let task = URLSession.shared.dataTask(with: request) { data, response, error in - if let error = error { - completion(false, "上传失败: \(error.localizedDescription)") - return - } - - if let httpResponse = response as? HTTPURLResponse { - if (200...299).contains(httpResponse.statusCode) { - completion(true, nil) - } else { - let statusCode = httpResponse.statusCode - let errorMessage = String(data: data ?? Data(), encoding: .utf8) ?? "" - completion(false, "服务器返回错误状态码: \(statusCode), 响应: \(errorMessage)") - } - } else { - completion(false, "无效的服务器响应") - } - } - - task.resume() - - } catch { - completion(false, "请求数据序列化失败: \(error.localizedDescription)") - } - } -} diff --git a/wake/View/Components/Upload/MediaPicker.swift b/wake/View/Components/Upload/MediaPicker.swift index a6a0a74..dfb3f57 100644 --- a/wake/View/Components/Upload/MediaPicker.swift +++ b/wake/View/Components/Upload/MediaPicker.swift @@ -1,7 +1,7 @@ import SwiftUI import PhotosUI -import AVFoundation import os.log +import AVKit /// 媒体类型 public enum MediaType: Equatable { @@ -38,13 +38,11 @@ public enum MediaType: Equatable { struct MediaPicker: UIViewControllerRepresentable { @Binding var selectedMedia: [MediaType] - var selectionLimit: Int - var onDismiss: (() -> Void)? + let selectionLimit: Int + let onDismiss: (() -> Void)? func makeUIViewController(context: Context) -> PHPickerViewController { var configuration = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared()) - - // 配置支持图片和视频 configuration.filter = .any(of: [.videos, .images]) configuration.selectionLimit = selectionLimit configuration.preferredAssetRepresentationMode = .current @@ -63,9 +61,6 @@ struct MediaPicker: UIViewControllerRepresentable { class Coordinator: NSObject, PHPickerViewControllerDelegate { let parent: MediaPicker private let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.example.app", category: "MediaPicker") - private var processedCount = 0 - private var totalToProcess = 0 - private var tempMedia: [MediaType] = [] init(_ parent: MediaPicker) { self.parent = parent @@ -77,26 +72,36 @@ struct MediaPicker: UIViewControllerRepresentable { return } - processedCount = 0 - totalToProcess = results.count - tempMedia = [] + var processedMedia: [MediaType] = [] + let group = DispatchGroup() for result in results { let itemProvider = result.itemProvider if itemProvider.hasItemConformingToTypeIdentifier(UTType.image.identifier) { - processImage(itemProvider: itemProvider) { [weak self] media in - self?.handleProcessedMedia(media) + group.enter() + processImage(itemProvider: itemProvider) { media in + if let media = media { + processedMedia.append(media) + } + group.leave() } } else if itemProvider.hasItemConformingToTypeIdentifier(UTType.movie.identifier) { - processVideo(itemProvider: itemProvider) { [weak self] media in - self?.handleProcessedMedia(media) + group.enter() + processVideo(itemProvider: itemProvider) { media in + if let media = media { + processedMedia.append(media) + } + group.leave() } - } else { - processedCount += 1 - checkCompletion() } } + + group.notify(queue: .main) { + self.parent.selectedMedia = processedMedia + self.printMediaInfo(media: processedMedia) + self.parent.onDismiss?() + } } private func processImage(itemProvider: NSItemProvider, completion: @escaping (MediaType?) -> Void) { @@ -118,25 +123,21 @@ struct MediaPicker: UIViewControllerRepresentable { return } - // 创建临时文件URL let tempDirectory = FileManager.default.temporaryDirectory let targetURL = tempDirectory.appendingPathComponent("\(UUID().uuidString).\(videoURL.pathExtension)") do { - // 将视频复制到临时目录 if FileManager.default.fileExists(atPath: targetURL.path) { try FileManager.default.removeItem(at: targetURL) } try FileManager.default.copyItem(at: videoURL, to: targetURL) - // 提取视频缩略图 MediaUtils.extractFirstFrame(from: targetURL) { result in switch result { case .success(let thumbnail): completion(.video(targetURL, thumbnail)) case .failure(let error): self.logger.error("Failed to extract video thumbnail: \(error.localizedDescription)") - // 即使缩略图提取失败,也继续处理视频 completion(.video(targetURL, nil)) } } @@ -147,30 +148,54 @@ struct MediaPicker: UIViewControllerRepresentable { } } - private func handleProcessedMedia(_ media: MediaType?) { - if let media = media { - DispatchQueue.main.async { [weak self] in - self?.tempMedia.append(media) - self?.checkCompletion() + private func printMediaInfo(media: [MediaType]) { + print("=== Selected Media Information ===") + for (index, media) in media.enumerated() { + print("\nItem \(index + 1):") + + switch media { + case .image(let image): + print("Type: Image") + print("Dimensions: \(Int(image.size.width))x\(Int(image.size.height))") + if let data = image.jpegData(compressionQuality: 1.0) { + print("File Size: \(formatFileSize(Int64(data.count)))") + } + + case .video(let url, _): + print("Type: Video") + print("File Name: \(url.lastPathComponent)") + print("File Path: \(url.path)") + + if let attributes = try? FileManager.default.attributesOfItem(atPath: url.path), + let fileSize = attributes[.size] as? Int64 { + print("File Size: \(formatFileSize(fileSize))") + } + + let asset = AVURLAsset(url: url) + let duration = asset.duration.seconds + print("Duration: \(formatTimeInterval(duration))") + + if let track = asset.tracks(withMediaType: .video).first { + let size = track.naturalSize + print("Video Dimensions: \(Int(size.width))x\(Int(size.height))") + } } - } else { - processedCount += 1 - checkCompletion() } + print("================================\n") } - private func checkCompletion() { - processedCount += 1 - - if processedCount >= totalToProcess { - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - if !self.tempMedia.isEmpty { - self.parent.selectedMedia = self.tempMedia - } - self.parent.onDismiss?() - } - } + private func formatFileSize(_ bytes: Int64) -> String { + let formatter = ByteCountFormatter() + formatter.allowedUnits = [.useBytes, .useKB, .useMB, .useGB] + formatter.countStyle = .file + return formatter.string(fromByteCount: bytes) + } + + private func formatTimeInterval(_ interval: TimeInterval) -> String { + let formatter = DateComponentsFormatter() + formatter.allowedUnits = [.hour, .minute, .second] + formatter.zeroFormattingBehavior = .pad + return formatter.string(from: interval) ?? "00:00" } } -} \ No newline at end of file +} diff --git a/wake/View/Components/Upload/MediaPickerWithLogger.swift b/wake/View/Components/Upload/MediaPickerWithLogger.swift deleted file mode 100644 index bf9628a..0000000 --- a/wake/View/Components/Upload/MediaPickerWithLogger.swift +++ /dev/null @@ -1,168 +0,0 @@ -import SwiftUI -import PhotosUI -import os.log -import AVKit - -struct MediaPickerWithLogging: UIViewControllerRepresentable { - @Binding var selectedMedia: [MediaType] - let selectionLimit: Int - let onDismiss: (() -> Void)? - - func makeUIViewController(context: Context) -> PHPickerViewController { - var configuration = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared()) - configuration.filter = .any(of: [.videos, .images]) - configuration.selectionLimit = selectionLimit - configuration.preferredAssetRepresentationMode = .current - - let picker = PHPickerViewController(configuration: configuration) - picker.delegate = context.coordinator - return picker - } - - func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {} - - func makeCoordinator() -> Coordinator { - Coordinator(self) - } - - class Coordinator: NSObject, PHPickerViewControllerDelegate { - let parent: MediaPickerWithLogging - private let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.example.app", category: "MediaPickerWithLogging") - - init(_ parent: MediaPickerWithLogging) { - self.parent = parent - } - - func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { - guard !results.isEmpty else { - parent.onDismiss?() - return - } - - var processedMedia: [MediaType] = [] - let group = DispatchGroup() - - for result in results { - let itemProvider = result.itemProvider - - if itemProvider.hasItemConformingToTypeIdentifier(UTType.image.identifier) { - group.enter() - processImage(itemProvider: itemProvider) { media in - if let media = media { - processedMedia.append(media) - } - group.leave() - } - } else if itemProvider.hasItemConformingToTypeIdentifier(UTType.movie.identifier) { - group.enter() - processVideo(itemProvider: itemProvider) { media in - if let media = media { - processedMedia.append(media) - } - group.leave() - } - } - } - - group.notify(queue: .main) { - self.parent.selectedMedia = processedMedia - self.printMediaInfo(media: processedMedia) - self.parent.onDismiss?() - } - } - - private func processImage(itemProvider: NSItemProvider, completion: @escaping (MediaType?) -> Void) { - itemProvider.loadObject(ofClass: UIImage.self) { (object, error) in - if let image = object as? UIImage { - completion(.image(image)) - } else { - self.logger.error("Failed to load image: \(error?.localizedDescription ?? "Unknown error")") - completion(nil) - } - } - } - - private func processVideo(itemProvider: NSItemProvider, completion: @escaping (MediaType?) -> Void) { - itemProvider.loadFileRepresentation(forTypeIdentifier: UTType.movie.identifier) { url, error in - guard let videoURL = url, error == nil else { - self.logger.error("Failed to load video: \(error?.localizedDescription ?? "Unknown error")") - completion(nil) - return - } - - let tempDirectory = FileManager.default.temporaryDirectory - let targetURL = tempDirectory.appendingPathComponent("\(UUID().uuidString).\(videoURL.pathExtension)") - - do { - if FileManager.default.fileExists(atPath: targetURL.path) { - try FileManager.default.removeItem(at: targetURL) - } - try FileManager.default.copyItem(at: videoURL, to: targetURL) - - MediaUtils.extractFirstFrame(from: targetURL) { result in - switch result { - case .success(let thumbnail): - completion(.video(targetURL, thumbnail)) - case .failure(let error): - self.logger.error("Failed to extract video thumbnail: \(error.localizedDescription)") - completion(.video(targetURL, nil)) - } - } - } catch { - self.logger.error("Failed to copy video file: \(error.localizedDescription)") - completion(nil) - } - } - } - - private func printMediaInfo(media: [MediaType]) { - print("=== Selected Media Information ===") - for (index, media) in media.enumerated() { - print("\nItem \(index + 1):") - - switch media { - case .image(let image): - print("Type: Image") - print("Dimensions: \(Int(image.size.width))x\(Int(image.size.height))") - if let data = image.jpegData(compressionQuality: 1.0) { - print("File Size: \(formatFileSize(Int64(data.count)))") - } - - case .video(let url, _): - print("Type: Video") - print("File Name: \(url.lastPathComponent)") - print("File Path: \(url.path)") - - if let attributes = try? FileManager.default.attributesOfItem(atPath: url.path), - let fileSize = attributes[.size] as? Int64 { - print("File Size: \(formatFileSize(fileSize))") - } - - let asset = AVURLAsset(url: url) - let duration = asset.duration.seconds - print("Duration: \(formatTimeInterval(duration))") - - if let track = asset.tracks(withMediaType: .video).first { - let size = track.naturalSize - print("Video Dimensions: \(Int(size.width))x\(Int(size.height))") - } - } - } - print("================================\n") - } - - private func formatFileSize(_ bytes: Int64) -> String { - let formatter = ByteCountFormatter() - formatter.allowedUnits = [.useBytes, .useKB, .useMB, .useGB] - formatter.countStyle = .file - return formatter.string(fromByteCount: bytes) - } - - private func formatTimeInterval(_ interval: TimeInterval) -> String { - let formatter = DateComponentsFormatter() - formatter.allowedUnits = [.hour, .minute, .second] - formatter.zeroFormattingBehavior = .pad - return formatter.string(from: interval) ?? "00:00" - } - } -} \ No newline at end of file diff --git a/wake/View/Examples/MediaUpload.swift b/wake/View/Components/Upload/MediaUpload.swift similarity index 99% rename from wake/View/Examples/MediaUpload.swift rename to wake/View/Components/Upload/MediaUpload.swift index 2585f68..36515c0 100644 --- a/wake/View/Examples/MediaUpload.swift +++ b/wake/View/Components/Upload/MediaUpload.swift @@ -186,7 +186,7 @@ struct MediaUploadExample: View { } .navigationTitle("媒体上传") .sheet(isPresented: $showMediaPicker) { - MediaPickerWithLogging( + MediaPicker( selectedMedia: $uploadManager.selectedMedia, selectionLimit: 5, onDismiss: { showMediaPicker = false } diff --git a/wake/View/Components/Upload/MediaUploader.swift b/wake/View/Components/Upload/MediaUploader.swift deleted file mode 100644 index eb922b6..0000000 --- a/wake/View/Components/Upload/MediaUploader.swift +++ /dev/null @@ -1,138 +0,0 @@ -import SwiftUI -import os.log - -class MediaUploader: ObservableObject { - @Published var selectedMedia: [MediaType] = [] - @Published private(set) var isUploading = false - @Published private(set) var uploadProgress: [Int: Double] = [:] // 跟踪每个上传任务的进度 - @Published var showError = false - @Published private(set) var errorMessage = "" - - @Published var showMediaPicker = false - let maxSelection: Int - var onUploadComplete: ([(MediaType, URL)]?) -> Void - var uploadFunction: (MediaType, @escaping (Double) -> Void) async throws -> URL - - private let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.example.app", category: "MediaUploader") - - init(maxSelection: Int, - onUploadComplete: @escaping ([(MediaType, URL)]?) -> Void, - uploadFunction: @escaping (MediaType, @escaping (Double) -> Void) async throws -> URL) { - self.maxSelection = maxSelection - self.onUploadComplete = onUploadComplete - self.uploadFunction = uploadFunction - } - - // 显示媒体选择器 - func showPicker() { - DispatchQueue.main.async { [weak self] in - self?.showMediaPicker = true - } - } - - // 公开的方法供外部调用 - func startUpload() async -> [(MediaType, URL)]? { - guard !selectedMedia.isEmpty else { return nil } - - isUploading = true - uploadProgress.removeAll() - - do { - var uploadedResults: [(MediaType, URL)] = [] - - for (index, media) in selectedMedia.enumerated() { - let url = try await uploadFunction(media) { [weak self] progress in - DispatchQueue.main.async { - self?.uploadProgress[index] = progress - } - } - uploadedResults.append((media, url)) - } - - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.isUploading = false - self.onUploadComplete(uploadedResults) - self.selectedMedia.removeAll() - } - - return uploadedResults - } catch { - logger.error("上传失败: \(error.localizedDescription)") - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.errorMessage = "上传失败: \(error.localizedDescription)" - self.showError = true - self.isUploading = false - } - return nil - } - } -} - -struct MediaUploaderView: View { - @ObservedObject var mediaUploader: MediaUploader - - var body: some View { - VStack(alignment: .leading, spacing: 16) { - // 显示已选媒体数量 - if !mediaUploader.selectedMedia.isEmpty { - Text("已选择 \(mediaUploader.selectedMedia.count) 个文件") - .foregroundColor(.secondary) - } - } - .padding() - .background(Color(.systemBackground)) - .cornerRadius(12) - .shadow(radius: 2) - .fullScreenCover(isPresented: $mediaUploader.showMediaPicker) { - MediaPicker( - selectedMedia: $mediaUploader.selectedMedia, - selectionLimit: mediaUploader.maxSelection - ) { - mediaUploader.showMediaPicker = false - } - } - .alert("错误", isPresented: $mediaUploader.showError) { - Button("确定", role: .cancel) {} - } message: { - Text(mediaUploader.errorMessage) - } - } -} - -// MARK: - 预览 -struct MediaUploader_Previews: PreviewProvider { - static var previews: some View { - Group { - MediaUploaderView( - mediaUploader: MediaUploader( - maxSelection: 5, - onUploadComplete: { _ in }, - uploadFunction: { _, _ in - // 模拟上传 - try await Task.sleep(nanoseconds: 1_000_000_000) - return URL(string: "https://example.com/uploaded")! - } - ) - ) - .padding() - .previewLayout(.sizeThatFits) - - MediaUploaderView( - mediaUploader: MediaUploader( - maxSelection: 5, - onUploadComplete: { _ in }, - uploadFunction: { _, _ in - // 模拟上传 - try await Task.sleep(nanoseconds: 1_000_000_000) - return URL(string: "https://example.com/uploaded")! - } - ) - ) - .padding() - .previewLayout(.sizeThatFits) - .preferredColorScheme(.dark) - } - } -} diff --git a/wake/View/Components/Upload/Upload.swift b/wake/View/Components/Upload/Upload.swift deleted file mode 100644 index e69de29..0000000 diff --git a/wake/View/Components/Upload/VideoPicker.swift b/wake/View/Components/Upload/VideoPicker.swift deleted file mode 100644 index b50aa4f..0000000 --- a/wake/View/Components/Upload/VideoPicker.swift +++ /dev/null @@ -1,88 +0,0 @@ -import SwiftUI -import PhotosUI -import AVFoundation -import os.log - -struct VideoPicker: UIViewControllerRepresentable { - @Binding var selectedVideoURL: URL? - @Binding var thumbnailImage: UIImage? - var onDismiss: (() -> Void)? - - func makeUIViewController(context: Context) -> PHPickerViewController { - var configuration = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared()) - configuration.filter = .videos - configuration.selectionLimit = 1 - configuration.preferredAssetRepresentationMode = .current - - let picker = PHPickerViewController(configuration: configuration) - picker.delegate = context.coordinator - return picker - } - - func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {} - - func makeCoordinator() -> Coordinator { - Coordinator(self) - } - - class Coordinator: NSObject, PHPickerViewControllerDelegate { - let parent: VideoPicker - private let logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "com.example.app", category: "VideoPicker") - - init(_ parent: VideoPicker) { - self.parent = parent - } - - func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { - guard let result = results.first else { - parent.onDismiss?() - return - } - - // 获取视频URL - result.itemProvider.loadFileRepresentation(forTypeIdentifier: UTType.movie.identifier) { [weak self] url, error in - guard let self = self, let videoURL = url, error == nil else { - self?.logger.error("Failed to load video: \(error?.localizedDescription ?? "Unknown error")") - DispatchQueue.main.async { - self?.parent.onDismiss?() - } - return - } - - // 创建临时文件URL - let tempDirectory = FileManager.default.temporaryDirectory - let targetURL = tempDirectory.appendingPathComponent("\(UUID().uuidString).\(videoURL.pathExtension)") - - do { - // 将视频复制到临时目录 - if FileManager.default.fileExists(atPath: targetURL.path) { - try FileManager.default.removeItem(at: targetURL) - } - try FileManager.default.copyItem(at: videoURL, to: targetURL) - - // 提取视频首帧 - MediaUtils.extractFirstFrame(from: targetURL) { [weak self] result in - switch result { - case .success(let image): - DispatchQueue.main.async { - self?.parent.thumbnailImage = image - self?.parent.selectedVideoURL = targetURL - self?.parent.onDismiss?() - } - case .failure(let error): - self?.logger.error("Failed to extract video thumbnail: \(error.localizedDescription)") - DispatchQueue.main.async { - self?.parent.onDismiss?() - } - } - } - } catch { - self.logger.error("Failed to copy video file: \(error.localizedDescription)") - DispatchQueue.main.async { - self.parent.onDismiss?() - } - } - } - } - } -} diff --git a/wake/View/Examples/MediaDemo.swift b/wake/View/Examples/MediaDemo.swift index 25f8239..1f1e97d 100644 --- a/wake/View/Examples/MediaDemo.swift +++ b/wake/View/Examples/MediaDemo.swift @@ -23,7 +23,7 @@ struct MediaUploadDemo: View { } .padding(.horizontal) .sheet(isPresented: $showMediaPicker) { - MediaPickerWithLogging( + MediaPicker( selectedMedia: $uploadManager.selectedMedia, selectionLimit: 10, onDismiss: {