设计模式只看不练可不行,写个上传解耦库练练手(下)
2023-09-27 14:25:55 时间
⑤ 自定义后拦截器
设计模式:以桥接模式和访问者模式为例,看设计模式在微信小游戏版本迭代中的应用(上) 去年9月份,微信小游戏《羊了个羊》火爆全网,由于同时在线玩家过多,开发商服务器2天之内竟然出现了3次宕机。这在云开发时代是极少出现的,若不是火爆程度大大超出了预期,程序员怎么可能来不及扩容服务器呢
对响应数据进行处理 如字符串解析显示
class SimpleParsingInterceptor: Interceptor { override fun intercept(chain: Interceptor.Chain): Task { val task chain.task() if(task is ImageTask) { task.response?.let { var tempContent it.content if(tempContent.startsWith( { )) { val index: Int tempContent.indexOf( { ) tempContent tempContent.substring(index) try { val jsonObject JSONObject(tempContent) if (jsonObject.getInt( code ) 200) { //解析服务端回传内容 val mapJson: JSONObject jsonObject.getJSONObject( data ) var key var image val ite mapJson.keys() while (ite.hasNext()) { key ite.next() image mapJson[key] as String task.fileUrl image task.fileUrl?.logV() } else { jsonObject.toString().logV() } catch (e: Exception) { e.message?.logD() return chain.proceed(task)
可以不在App类中初始化 只要保证在upload前init()了就行~
LightUpload.init(LightUploadBuilder() // 传入默认配置 可变参数 支持多种类型Task的定制 .config(LightUploadTask.IMAGE to ImageUploadConfig().apply { reqData ReqData( uploadUrl http://127.0.0.1:5000/upload , requestMethod POST , headers hashMapOf( Charset to utf-8 , connection to keep-alive }, LightUploadTask.VIDEO to VideoUploadConfig() .apply { reqData ReqData( uploadUrl http://127.0.0.1:5000/upload , requestMethod POST , headers hashMapOf( Charset to utf-8 , connection to keep-alive // 设置上传请求 同样也是可变参数 支持多种类型定制 .upload(LightUploadTask.IMAGE to HucUpload()) // 添加前拦截器 .addBeforeInterceptor(PictureRotateInterceptor()) .addBeforeInterceptor(PictureCompressInterceptor()) .addBeforeInterceptor(VideoCompressInterceptor()) .addBeforeInterceptor(VideoFrameInterceptor()) // 添加后拦截器 .addDoneInterceptors(SimpleParsingInterceptor())
LightUpload.upload(task CpImageTask().apply { filePath path needCompress true compressPercent (1..100).random() callback object : Upload.CallBack { override fun onSuccess(task: Task) { // 成功回调 text ${task.response!!.content}\n override fun onFailure(task: Task) { // 失败回调 task.throwable?.message?.let { it1 - shortToast(it1) } })
命令行cd到项目的upload-server项目 第一次运行前执行下述命令安装python脚本相关依赖
pip install -r pip install requirements.txt
安装完后 键入下述命令运行脚本
python app.py
然后手机和电脑在同一局域网 配置下代理 输入ipconfig查看本机IP
配置下手机 开下charles
运行效果如下
Logcat也可以看到输出信息
Nice~
设计模式:以桥接模式和访问者模式为例,看设计模式在微信小游戏版本迭代中的应用(上) 去年9月份,微信小游戏《羊了个羊》火爆全网,由于同时在线玩家过多,开发商服务器2天之内竟然出现了3次宕机。这在云开发时代是极少出现的,若不是火爆程度大大超出了预期,程序员怎么可能来不及扩容服务器呢
相关文章
- 上传文件到hdfs注意事项
- iOS- 利用AFNetworking(AFN) - 实现图片上传
- 文件上传---普通文件fileupload.jar和url文件httpUrlConnection
- React Native 使用react-native-image-picker库实现图片上传功能
- 前端上传组件Plupload使用指南【转】
- Docker安装showdoc,本地图片上传问题(nginx 反向代理 源ip)
- SharePoint2013 上传文件到文档库
- 关于android Http访问,上传,用了三个方法
- 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
- [ 漏洞复现篇 ]通达 OA11.6 文件删除 + 任意文件上传 rce 漏洞复现