feat: 日志

This commit is contained in:
jinyaqiu 2025-08-21 08:46:32 +08:00
parent 9e9463571b
commit 093f9048f9

View File

@ -140,36 +140,99 @@ public class ImageUploadService {
/// ///
/// - Parameters: /// - Parameters:
/// - media: /// - media:
/// - compressionQuality: / (0.0 1.0) /// - progress: (0.0 1.0)
/// - progressHandler: (0.0 1.0)
/// - completion: /// - completion:
public func uploadMedia( public func uploadMedia(
_ media: MediaType, _ media: MediaType,
compressionQuality: CGFloat = 0.7, progress: @escaping (UploadProgress) -> Void,
progress progressHandler: @escaping (UploadProgress) -> Void,
completion: @escaping (Result<MediaUploadResult, Error>) -> Void completion: @escaping (Result<MediaUploadResult, Error>) -> Void
) { ) {
switch media { switch media {
case .image(let image): case .image(let image):
// print("🖼️ 开始处理图片上传")
uploadCompressedImage( uploadImage(
image, image,
compressionQuality: compressionQuality, progress: { progressInfo in
progress: progressHandler, print("📊 图片上传进度: \(progressInfo.current)%")
progress(progressInfo)
},
completion: { result in completion: { result in
let mediaResult = result.map { MediaUploadResult.file($0) } switch result {
completion(mediaResult) case .success(let uploadResult):
print("✅ 图片上传完成, fileId: \(uploadResult.fileId)")
completion(.success(.file(uploadResult)))
case .failure(let error):
print("❌ 图片上传失败: \(error.localizedDescription)")
completion(.failure(error))
}
} }
) )
case .video(let videoURL, let thumbnail): case .video(let videoURL, _):
// print("🎥 开始处理视频上传: \(videoURL.lastPathComponent)")
uploadVideoWithThumbnail(
videoURL: videoURL, uploader.uploadVideo(
existingThumbnail: thumbnail, videoURL,
compressionQuality: compressionQuality, progress: { uploadProgress in
progress: progressHandler, print("📊 视频上传进度: \(Int(uploadProgress * 100))%")
completion: completion let progressInfo = UploadProgress(
current: Int(uploadProgress * 100),
total: 100,
progress: uploadProgress,
isOriginal: true
)
progress(progressInfo)
},
completion: { result in
switch result {
case .success(let videoResult):
print("✅ 视频文件上传完成, fileId: \(videoResult.fileId)")
print("🖼️ 开始提取视频缩略图...")
MediaUtils.extractFirstFrame(from: videoURL) { thumbnailResult in
switch thumbnailResult {
case .success(let thumbnailImage):
print("🖼️ 视频缩略图提取成功")
if let compressedThumbnail = thumbnailImage.resized(to: CGSize(width: 800, height: 800)) {
print("🖼️ 开始上传视频缩略图...")
self.uploader.uploadImage(
compressedThumbnail,
progress: { _ in },
completion: { thumbnailResult in
switch thumbnailResult {
case .success(let thumbnailUploadResult):
print("✅ 视频缩略图上传完成, fileId: \(thumbnailUploadResult.fileId)")
let result = MediaUploadResult.video(
video: videoResult,
thumbnail: thumbnailUploadResult
)
completion(.success(result))
case .failure(let error):
print("❌ 视频缩略图上传失败: \(error.localizedDescription)")
completion(.failure(error))
}
}
)
} else {
let error = NSError(domain: "ImageUploadService", code: -1, userInfo: [NSLocalizedDescriptionKey: "Failed to compress thumbnail"])
print("❌ 视频缩略图压缩失败")
completion(.failure(error))
}
case .failure(let error):
print("❌ 视频缩略图提取失败: \(error.localizedDescription)")
completion(.failure(error))
}
}
case .failure(let error):
print("❌ 视频文件上传失败: \(error.localizedDescription)")
completion(.failure(error))
}
}
) )
} }
} }
@ -319,3 +382,23 @@ public class ImageUploadService {
} }
} }
} }
// MARK: - UIImage Extension
private extension UIImage {
func resized(to size: CGSize) -> UIImage? {
let widthRatio = size.width / self.size.width
let heightRatio = size.height / self.size.height
let ratio = min(widthRatio, heightRatio)
let newSize = CGSize(
width: self.size.width * ratio,
height: self.size.height * ratio
)
let renderer = UIGraphicsImageRenderer(size: newSize)
return renderer.image { _ in
self.draw(in: CGRect(origin: .zero, size: newSize))
}
}
}