提交
This commit is contained in:
@@ -15,6 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@class QXCOSUploadCredentialsModel;
|
||||
@interface QXCOSUploadManager : NSObject
|
||||
+(instancetype)shareManager;
|
||||
-(void)audioUploadFile:(id)file withObjectKey:(NSString *)key complete:(void (^)(NSString * fileUrl, QXCOSUploadImageState))complete;
|
||||
- (void)uploadFile:(NSArray *_Nonnull)files withObjectKey:(NSArray *)objectKeys isAsync:(BOOL)isAsync complete:(void(^)(NSArray<NSString *> * names, QXCOSUploadImageState state))complete;
|
||||
- (void)activityUploadFile:(NSArray *)files withObjectKey:(NSArray *)objectKeys isAsync:(BOOL)isAsync complete:(void(^)(NSArray<NSString *> *names, QXCOSUploadImageState state))complete;
|
||||
- (NSString *)currentDate;
|
||||
|
||||
@@ -27,6 +27,77 @@
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)audioUploadFile:(id)file withObjectKey:(NSString *)key complete:(void (^)(NSString * fileUrl, QXCOSUploadImageState state))complete{
|
||||
[[QXRequset shareInstance] getWithUrl:[NSString stringWithFormat:@"%@%@",ServerUrl,QXGetCosTempKeys] parameters:@{} needCache:NO success:^(id responseObject) {
|
||||
QXCOSUploadModel *model = [QXCOSUploadModel yy_modelWithJSON:responseObject[@"data"]];
|
||||
if (![model.region isExist] || ![model.bucket isExist] || ![model.credentials.sessionToken isExist] || ![model.credentials.tmpSecretId isExist] || ![model.credentials.tmpSecretKey isExist]) {
|
||||
QXLOG(@"服务端配置错误");
|
||||
complete(@"",QXCOSUploadImageFailed);
|
||||
return;
|
||||
}
|
||||
NSString *region = model.region;
|
||||
QCloudServiceConfiguration* configuration = [QCloudServiceConfiguration new];
|
||||
QCloudCOSXMLEndPoint* endpoint = [[QCloudCOSXMLEndPoint alloc] init];
|
||||
endpoint.regionName = region;
|
||||
// 使用 HTTPS
|
||||
endpoint.useHTTPS = true;
|
||||
configuration.endpoint = endpoint;
|
||||
// 初始化 COS 服务示例
|
||||
[QCloudCOSXMLService registerDefaultCOSXMLWithConfiguration:configuration];
|
||||
[QCloudCOSTransferMangerService registerDefaultCOSTransferMangerWithConfiguration:configuration];
|
||||
|
||||
NSString *bucket = model.bucket;
|
||||
|
||||
|
||||
QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];
|
||||
QCloudCredential * credential = [QCloudCredential new];
|
||||
credential.secretID = model.credentials.tmpSecretId;
|
||||
credential.secretKey = model.credentials.tmpSecretKey;
|
||||
credential.token = model.credentials.sessionToken;
|
||||
// 设置临时密钥
|
||||
put.credential = credential;
|
||||
put.bucket = bucket;
|
||||
put.object = [NSString stringWithFormat:@"%@%@",AUDIO_FILE_BASE_PATH,key];
|
||||
if ([file isKindOfClass:[UIImage class]]) {
|
||||
NSData *data = UIImageJPEGRepresentation(file, 0.3);
|
||||
put.body = data;
|
||||
}else if ([file isKindOfClass:[NSData class]]){
|
||||
put.body = file;
|
||||
}else if ([file isKindOfClass:[NSURL class]]){
|
||||
put.body = (NSURL *)file;
|
||||
}
|
||||
// 监听上传进度
|
||||
[put setSendProcessBlock:^(int64_t bytesSent,
|
||||
int64_t totalBytesSent,
|
||||
int64_t totalBytesExpectedToSend) {
|
||||
// bytesSent 本次要发送的字节数(一个大文件可能要分多次发送)
|
||||
// totalBytesSent 已发送的字节数
|
||||
// totalBytesExpectedToSend 本次上传要发送的总字节数(即一个文件大小)
|
||||
}];
|
||||
|
||||
// 监听上传结果
|
||||
[put setFinishBlock:^(QCloudUploadObjectResult *result, NSError *error) {
|
||||
if (!error) {
|
||||
NSLog(@"upload object success!");
|
||||
if (complete) {
|
||||
complete(result.location ,QXCOSUploadImageSuccess);
|
||||
}
|
||||
} else {
|
||||
NSLog(@"upload object failed, error: %@" , error);
|
||||
if (complete) {
|
||||
complete(@"",QXCOSUploadImageFailed);
|
||||
}
|
||||
}
|
||||
}];
|
||||
[[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];
|
||||
|
||||
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)uploadFile:(NSArray *)files withObjectKey:(NSArray *)objectKeys isAsync:(BOOL)isAsync complete:(void (^)(NSArray<NSString *> * _Nullable, QXCOSUploadImageState))complete{
|
||||
[[QXRequset shareInstance] getWithUrl:[NSString stringWithFormat:@"%@%@",ServerUrl,QXGetCosTempKeys] parameters:@{} needCache:NO success:^(id responseObject) {
|
||||
QXCOSUploadModel *model = [QXCOSUploadModel yy_modelWithJSON:responseObject[@"data"]];
|
||||
|
||||
@@ -178,6 +178,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (NSInteger)ageWithDateOfBirth;
|
||||
/// 传入秒 得到 几天 几小时
|
||||
+ (NSString*)getTimeWithSecond:(long long)second;
|
||||
|
||||
// 方法2:更严谨的实现,包含边界条件处理
|
||||
+ (NSInteger)convertTimestampToHoursWithPrecision:(long long)endTime;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -399,7 +399,33 @@
|
||||
}
|
||||
+(NSString *)getTimeWithSecond:(long long)second{
|
||||
NSInteger day = second/(60*60*24);
|
||||
NSInteger hour = second%(60*60*24)/(60*60);
|
||||
double hourT = second%(60*60*24)/3600.0;
|
||||
NSInteger hour = (NSInteger)ceil(hourT);
|
||||
return [NSString stringWithFormat:@"%ld天%ld小时",day,hour];
|
||||
}
|
||||
// 方法2:更严谨的实现,包含边界条件处理
|
||||
+ (NSInteger)convertTimestampToHoursWithPrecision:(long long)endTime {
|
||||
NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
|
||||
// 将秒转换为毫秒
|
||||
long long milliseconds = (long long)(currentTime);
|
||||
NSInteger timestamp = endTime - currentTime;
|
||||
|
||||
if (timestamp <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 处理极小的时间值(小于1秒)
|
||||
if (timestamp < 1) {
|
||||
return 1; // 即使小于1秒也按1小时计算
|
||||
}
|
||||
|
||||
// 计算小时数
|
||||
double hours = timestamp / 3600.0;
|
||||
|
||||
// 使用ceil函数向上取整
|
||||
NSInteger roundedHours = (NSInteger)ceil(hours);
|
||||
|
||||
// 确保至少为1小时
|
||||
return MAX(1, roundedHours);
|
||||
}
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user