前一段时光我翻译了Future Studio的Retrofit2教程,大年夜中也进修到了一些Retrofit2的应用办法,如不雅你比来也计算入手进修,我博客上Retrofit教程,你也许可以参考下:Retrofit教程 。
本文作为阶段性小结,将应用结合Python中的Flask框架实现Android端多文件上传功能。如不雅读者没有应用过Python中的Flask也没有关系,可以只看Android客户端部分,毕竟客户端工程师只应用API也是可以的。
1.实验效不雅
如不雅没有接触过Retrofit 2,可以来我的博客Retrofit教程 懂得。
Android端操作截图
Server端接收到的图片
2. Server端拭魅战
Server端负责接收保存客户端上传来的图片并供给拜访图片的才能,Server有很多技巧可以实现,Python作为一门具有强大年夜的第三方库的说话,拥有很多web办事框架,如Flask,Django等。笔者采取Flask框架,Flask是微框架,实现小型功能十分便利,笔者实现的多文件上传功能,法度榜样不跨越30行。
界面构造如图所示:
2.1 情况安装
笔者应用的Python版本为3.4,可以去 Python3.4下载 选择下载合适本身体系的版本。完全安装Python教程请自行搜刮。
Python安装完成后须要安装Server端法度榜样依附库。经由过程pip安装:
- pip install Flask
- pip install werkzeug
3.1 添加依附库
2.2 法度榜样实现
起重要惹人依附库:
- from flask import Flask,request,send_from_directory,jsonify
- import os
- from werkzeug import secure_filename
本实验须要上传文件,须要将所上传文件的文件类型以及文件名做出限制,防止某些破坏办事器的法度榜样运行,别的有些不法文件名如:
filename = "../../../../home/username/.bashrc"
如不雅黑客们可以或许操作如许的文件,对办事器体系来说,将是致命袭击。所以werkzeug供给了secure_filename对上传文件的文件名进行合法校验。
断定文件后缀是否合法
- ALLOWED_EXTENSIONS=set(['png','jpg','jpeg','gif'])
- def allowed_file(filename):
- return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS
接收上传文件的函数代码如下:
- @app.route('/upload',methods=['POST'])
- def upload_file():
- if request.method=='POST':
- for k in request.files:
- file = request.files[k]
- image_urls = []
- if file and allowed_file(file.filename):
- filename=secure_filename(file.filename)
- file.save(os.path.join(app.config['IMAGE_FOLDER'],filename))
- image_urls.append("images/%s"%filename)
- return jsonify({"code":1,"image_urls":image_urls})
Flask支撑GET,POST,PUT,DELETE等HTTP请求方法,应用装潢器进行润饰,类似于Java中的注解概念,/upload为客户端请求的相对地址,请求方法限制为POST.根据request内置对象,可以拜访客户端发来的文件,将文件检查后保存在本地,个中image_urls为上传后的图片的相对地址数组。最后将图片的地址以json格局返回给客户端。
推荐阅读
它是一款快速原型的设计软件,由美国加利福利亚的Balsamiq工作室推出,它真正抓住了原型设计的核心和均衡点-既能设计草图,又能较好地进入到日常平凡团队工作的流程和对象。它具有极其丰富>>>详细阅读
本文标题:Android用Retrofit 2实现多文件上传实战
地址:http://www.17bianji.com/lsqh/34876.html
1/2 1