TFUploadAssistant https://github.com/TimeFaceCoder/TFUploadAssistant
// 上傳阿里云請求;或者其他封裝;
TFUploadAssistant;
TFUploadAssistant 單例類;提供上傳操作的統(tǒng)一接口;
TFUploadOperationProtocol 定義上傳操作,協(xié)議接口;start方法開始上傳;
@interface TFAliUploadOperation : NSObject <TFUploadOperationProtocol>
阿里云上傳實現(xiàn)
- (BOOL)objectExist:(NSString *)objectKey 檢查阿里云中是否存在!
start 中 調(diào)用 OSSPutObjectRequest請求上傳Object,
@interface TFUcloudUploadOperation : NSObject <TFUploadOperationProtocol>
Ucloud上傳實現(xiàn);
TFFileRecorder
上傳記錄持久化管理
里面使用EGOCache, 指定encode會對key進(jìn)行base64編碼;
對記錄進(jìn)行持久化,上傳成功自動刪除;上傳失敗會被重新上傳;
TFUploadHelper 中 在 defaultConfiguration 中設(shè)置 TFConfiguration;設(shè)置上傳類型,以及相應(yīng)的參數(shù);
調(diào)用[TFUploadAssistant sharedInstance] 的 setDefaultConfig配置;
[TFUploadAssistant sharedInstance] putData 上傳數(shù)據(jù),需要data,key等等;
// 響應(yīng)信息,
TFResponseInfo , 上傳成功回調(diào)TFUpCompletionHandler的參數(shù);
// 進(jìn)行參數(shù)檢查
- (BOOL)checkAndNotifyError:(NSString *)key
token:(NSString *)token
input:(NSObject *)input
complete:(TFUpCompletionHandler)completionHandler
// 上傳操作協(xié)議接口;
TFUploadOperationProtocol
封裝操作任務(wù),上傳完成回調(diào)、進(jìn)度回調(diào);啟動任務(wù);
阿里云、Ucloud接口實現(xiàn);
// 文件協(xié)議接口
TFFileProtocol
// 打開指定文件
@interface TFFile : NSObject<TFFileProtocol>
// 獲取文件屬性字典;文件大小、創(chuàng)建時間、修改時間
[[NSFileManager defaultManager] attributesOfItemAtPath:path error:&error2];
//[NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:&error] 不能用在大于 200M的文件上,改用filehandle
mimeType 文件類型
//
@interface TFPHAssetFile : NSObject<TFFileProtocol>
PHAsset 也有 創(chuàng)建時間、修改時間;
PHAsset 的類型 mediaType 有圖片、視頻、音頻;
PHAsset 相關(guān)操作,相當(dāng)于網(wǎng)絡(luò)請求;
fetchDataFromAsset 從PHAsset獲取NSData;
/**
- 設(shè)置圖片壓縮率
- @param quality 壓縮率 0 < q <= 1
*/
compressionQuality
// 對大于4096的圖片進(jìn)行壓縮;
- (NSData *)dataFromImage:(CGImageRef)imageRef metadata:(NSDictionary *)metadata mimetype:(NSString *)mimetype
(void) attachListener:(id<TFUploadAssistantDelegate>)listener token:(NSString *)token
TFUploadAssistant 中實現(xiàn)delegate、block兩種回調(diào)方式;
將delegate 保存在dic中uploadHandlers;使用token作為key;方面放的是數(shù)組array;
使用TFUploadHandler上傳;
// TFFile
NSFileHandle *f = nil;
NSData *d = nil;
//[NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:&error] 不能用在大于 200M的文件上,改用filehandle
// 參見 https://issues.apache.org/jira/browse/CB-5790