feat: 日志
This commit is contained in:
parent
9e9463571b
commit
093f9048f9
@ -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))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user