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:
/// - media:
/// - compressionQuality: / (0.0 1.0)
/// - progressHandler: (0.0 1.0)
/// - progress: (0.0 1.0)
/// - completion:
public func uploadMedia(
_ media: MediaType,
compressionQuality: CGFloat = 0.7,
progress progressHandler: @escaping (UploadProgress) -> Void,
progress: @escaping (UploadProgress) -> Void,
completion: @escaping (Result<MediaUploadResult, Error>) -> Void
) {
switch media {
case .image(let image):
//
uploadCompressedImage(
print("🖼️ 开始处理图片上传")
uploadImage(
image,
compressionQuality: compressionQuality,
progress: progressHandler,
progress: { progressInfo in
print("📊 图片上传进度: \(progressInfo.current)%")
progress(progressInfo)
},
completion: { result in
let mediaResult = result.map { MediaUploadResult.file($0) }
completion(mediaResult)
switch result {
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):
//
uploadVideoWithThumbnail(
videoURL: videoURL,
existingThumbnail: thumbnail,
compressionQuality: compressionQuality,
progress: progressHandler,
completion: completion
case .video(let videoURL, _):
print("🎥 开始处理视频上传: \(videoURL.lastPathComponent)")
uploader.uploadVideo(
videoURL,
progress: { uploadProgress in
print("📊 视频上传进度: \(Int(uploadProgress * 100))%")
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))
}
}
}