deletefile(deletefile 错误码5怎样解决)满满干货
↓推荐关注↓背景背景:最近一次业务需求是通过本地录制或者相册视频上传到亚马逊服务研究:前端小伙伴尝试接入 SDK 发现 AWS3 的上传部分还是需要做很多工作,比如切片部
↓推荐关注↓背景背景:最近一次业务需求是通过本地录制或者相册视频上传到亚马逊服务研究:前端小伙伴尝试接入 SDK 发现 AWS3 的上传部分还是需要做很多工作,比如切片部分 > 5M 及 ETAG 处理等
决策:为了减少前端工作,决定采用后端调用 S3 SDK 方式,前端通过后端预签名后的 URL 直接进行文件分段上传Github:TWMultiUploadFileManager[1]安装使用Cocoapods安装,或手动拖入项目
pod TWMultiUploadFileManager方案后端执行执行 AWS3 SDK API,前端通过后端预签名后的 URL 直接进行文件分段上传步骤step1: 前端对文件选取后进行切片 (> 5M )
step2: 请求后端上传 aws3 资源 urlstep3: 切片后的文件足个上传 aws3 服务器step4: 请求后端对上传完毕的资源文件做校验流程图
TWMultiUploadFileManager 组件封装功能封装了对文件分片处理,以及上传功能具体功能 ☑️maxConcurrentOperationCount:上传线程并发个数(默认3 )maxSize:文件大小限制(默认2GB )
perSlicedSize:每个分片大小(默认5M)retryTimes:每个分片上传尝试次数(默认3)timeoutInterval:請求時長 (默認 120 s)headerFields:附加 header
mimeType:文件上传类型 不为空 (默认 text/plain)TODO ⏳上传文件最大时长(秒s)默认7200最大缓冲分片数(默认100,建议不低于10,不高于100)附加参数, 目前封装 put 请求,后续会补充 post 请求
并发队列管理依赖 Queuer[2] 库根据场景:自定义 TWConcurrentOperation步骤step 1从相册中选择视频源(文件)// MARK: - Action/// 选择影片fileprivate
funcselectPhotoAction(animated: Bool = true) {let imagePicker: TZImagePickerController! = TZImagePickerController
(maxImagesCount: 9, delegate: self) imagePicker.allowPickingVideo = true imagePicker.allowPreview =
false imagePicker.videoMaximumDuration = Macro.videoMaximumDuration imagePicker.maxCropVideoDuration =
Int(Macro.videoMaximumDuration) imagePicker.allowPickingOriginalPhoto = false imagePicker.allowPickingImage =
false imagePicker.allowPickingMultipleVideo = false imagePicker.autoDismiss = false imagePicker.navLeftBarButtonSettingBlock = { leftButton
in leftButton?.isHidden = true } present(imagePicker, animated: animated, completion: nil
)}/// 获取视频资源fileprivatefunchandleRequestVideoURL(asset: PHAsset) {/// loadingprint("loading....")self
.requestVideoURL(asset: asset) { [weakself] (urlasset, url) inguardletself = selfelse { return }print
("success....")self.url = urlself.asset = assetself.uploadVideoView.play(videoUrl: url) } failure: { (info)
inprint("fail....") }}对视频源文件进行切片并创建上传资源对象(文件)/// 上传影片fileprivatefuncuploadVideoAction() {guardlet url = url,
let asset = asset ,let outputPath: String = self.fetchVideoPath(url: url) else { return }let relativePath:
String = TWMultiFileManager.copyVideoFile(atPath: outputPath, dirPathName: Macro.dirPathName)// 创建上传资源对象, 对文件进行切片
let fileSource: TWMultiUploadFileSource = TWMultiUploadFileSource( configure: self.configure, filePath: relativePath,
fileType: .video, localIdentifier: asset.localIdentifier )//
- 标签:
- 编辑:李松一
- 相关文章
-
曾小贤扮演者(爱情公寓曾小贤的扮演者)万万没想到
如果《爱情公寓5》真要回归,请把原汁原味的他们还给我们。
-
三氧化硫与氢氧化钠(三氧化硫与氢氧化钠反应方程式)墙裂推荐
化学方程式是学好化学的工具和基础,没有这一工具的运作,就无法解决化学具体问题;没有这一基础的奠基,就无法建造…
- 捷克斯洛伐克解体(捷克斯洛伐克解体成几个国家)这都可以?
- 捷克斯洛伐克解体(捷克斯洛伐克解体成几个国家)快来看
- nbalive08(Nbalive08新秀)原创
- 突围电视剧剧情介绍(突围电视剧剧情介绍大结局)这都可以
- 英雄杀吕雉(英雄杀吕雉配印)新鲜出炉