CSFileDownUpModel.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. //
  2. // CSFileDownUpModel.h
  3. // zhuxun
  4. //
  5. // Created by winsoft on 17/6/22.
  6. //
  7. //
  8. #warning 文件夹下载只需数据库文件表现fid和id和serverpath, 下载不需要文件夹, 文件夹ui表现形式由数据库体现.
  9. #import <Foundation/Foundation.h>
  10. #import "CSFileModel.h"
  11. typedef enum {
  12. DownUpModelDown = 0,
  13. DownUpModelUp = 1
  14. }DownUpModel;
  15. typedef enum {
  16. // FileSourcePhotoAlbum, //相册
  17. FileSourceFileLocal,//一般存储路径,为我的文件文件夹 --> fileType
  18. FileSourceCSCloud //云盘文件夹
  19. }FileSource;
  20. typedef enum {
  21. FileTypeImage = 2,//如果fileSource为local,则需要此参数,full path不同.
  22. FileTypeOther = 3,//
  23. }FileType;
  24. typedef enum {
  25. DownUpStatusWait = 1,//默认为排队等待.
  26. DownUpStatusDoing = 2,
  27. DownUpStatusPause = 3,//Pause->恢复doing时判断是否有其他进行,是则=wait.
  28. DownUpStatusSuccess = 4,
  29. DownUpStatusFailure = 5
  30. }DownUpStatus;
  31. /**
  32. * 文件上传下载数据库模型, FMDB独立管理.
  33. */
  34. @interface CSFileDownUpModel : NSObject
  35. //命名待修正,取消db字段,新增uuid的目的:可能多个model共享同一个task下的model.
  36. typedef void (^DownloadProgressUIBlock)(NSInteger receivedSize, NSInteger expectedSize, CGFloat progress,NSString *router,CSFileDownUpModel *fileDownUpModel,NSString *uuid);
  37. typedef void (^DownloadSuccessUIBlock)(NSInteger receivedSize,NSString *localRouter,CSFileDownUpModel *fileDownUpModel,NSString *uuid);
  38. typedef void (^DownloadFailedUIBlock)(NSString* errMessage,CSFileDownUpModel *fileDownUpModel,NSString *uuid);
  39. typedef void (^CSUploadProgressUIBlock)(double progress,NSInteger sendedSize, CSFileDownUpModel *fileDownUpModel,NSString *uuid);
  40. typedef void (^CSUploadSuccessUIBlock)(NSString* url,long long fileSize,CSFileDownUpModel *fileDownUpModel,NSString *uuid);
  41. typedef void (^CSUploadFailedUIBlock)(NSString* errMessage,CSFileDownUpModel *fileDownUpModel,NSString *uuid);
  42. @property (nonatomic , copy) NSString *sid;
  43. @property (nonatomic , copy) NSString *pid;
  44. @property (nonatomic , copy) NSString *delflag;
  45. @property (nonatomic , copy) NSString *ext;
  46. @property (nonatomic , assign) NSInteger type;
  47. @property (nonatomic , assign) BOOL isdir;
  48. @property (nonatomic , copy) NSString *md5;
  49. @property (nonatomic , copy) NSString *name;
  50. @property (nonatomic , assign) NSInteger size;
  51. @property (nonatomic , copy) NSString *user_id;
  52. @property (nonatomic , copy) NSString *serverFullPath;
  53. @property (nonatomic , copy) NSString *path;//点击文件夹下载时相对当前文件夹的位置
  54. /**
  55. * 上传还是下载
  56. */
  57. @property (nonatomic , assign) DownUpModel downUpType;
  58. /**
  59. * 下载地址(是否需要存储?每次上传下载的时候都要重新请求获取地址.)
  60. */
  61. //@property (nonatomic , copy) NSString *downLoadUrl;
  62. //
  63. ///**
  64. // * 上传地址
  65. // */
  66. //@property (nonatomic , copy) NSString *upLoadUrl;
  67. /**
  68. * 进行中还是下载
  69. */
  70. @property (nonatomic , assign) DownUpStatus downUpStatus;
  71. @property (nonatomic , assign) FileSource fileSouce;
  72. @property (nonatomic , assign) FileType fileType;
  73. /**
  74. * 文件目录层->localRootPath
  75. */
  76. @property (nonatomic , assign) NSInteger file_category;//服务端的full_server_path 有几个path就有多少count-1.如果/A/B/a.xxx
  77. /**
  78. * 操作时间
  79. */
  80. @property (nonatomic , assign) NSInteger downUpTimeStamp;
  81. /**
  82. * 唯一标识
  83. */
  84. @property (nonatomic , copy) NSString *downUpUUID;//由时间戳和md5生成.
  85. /**
  86. * 上传或者下载进度,bit
  87. */
  88. @property (nonatomic , assign) NSInteger downUpSize;
  89. /**
  90. * 本地路径,如果有的话
  91. */
  92. @property (nonatomic , copy) NSString *localRootPath;//重要参数,ui展示路径使用.
  93. //顺序:获取localpath = nil的,找到isdir的文件夹后,点击后查询路径是上一个文件夹的,如此递归...
  94. /**
  95. * 队列专用,不存储
  96. */
  97. @property (nonatomic , strong) CSFileDownUpModel *lastFileDownUpModel;
  98. @property (nonatomic , strong) CSFileDownUpModel *nextFileDownUpModel;
  99. /**
  100. * 当为文件夹时,所有的子文件模型.,数据库查询时赋值返回. 不存储.
  101. */
  102. @property (nonatomic , strong) NSArray *subFileDownUpModels;
  103. /**
  104. * model 下的回调.针对文件夹下载的优化.不存储.
  105. */
  106. @property (nonatomic, strong)DownloadProgressUIBlock downloadProgressBlock;
  107. @property (nonatomic, strong)DownloadSuccessUIBlock downloadSuccessBlock;
  108. @property (nonatomic, strong)DownloadFailedUIBlock downloadFailedBlock;
  109. @property (nonatomic, strong)CSUploadSuccessUIBlock uploadSuccessBlock;
  110. @property (nonatomic, strong)CSUploadFailedUIBlock uploadFailedBlock;
  111. @property (nonatomic, strong)CSUploadProgressUIBlock uploadProgressBlock;
  112. //主要还是下载.
  113. + (CSFileDownUpModel *)csfileDownupModelWithfileModel:(CSFileModel *)fileModel downUpType:(DownUpModel)downupType downUpStatus:(DownUpStatus)downUpStatus fileSource:(FileSource)fileSource fileType:(FileType)fileType localRootPath:(NSString *)localRootPath file_category:(NSInteger)file_category downUpTimeStamp:(NSDate *)downUpTimeStamp downUpUUID:(NSString*)downUpUUID downUpSize:(NSInteger)downUpSize;
  114. //主要还是上传(上传时会选择云盘路径)
  115. + (CSFileDownUpModel *)csfileDownupModelWithPid:(NSString *)pid Ext:(NSString *)ext type:(NSInteger)type md5:(NSString *)md5 name:(NSString *)name serverFullPath:(NSString *)serverFullPath path:(NSString *)path size:(NSInteger)size user_id:(NSString *)user_id downUpType:(DownUpModel)downupType downUpStatus:(DownUpStatus)downUpStatus fileSource:(FileSource)fileSource fileType:(FileType)fileType localRootPath:(NSString *)localRootPath file_category:(NSInteger)file_category downUpTimeStamp:(NSDate *)downUpTimeStamp downUpUUID:(NSString*)downUpUUID downUpSize:(NSInteger)downUpSize;
  116. //包一层上传下载请求地址..
  117. @end