php okhttp3 上传文件,Android使用OKHttp库实现视频文件的上传到服务器功能-程序员宅基地

技术标签: php okhttp3 上传文件  

1 服务器接口简介

此处我使用的服务器接口是使用Flask编写,具体实现代码:

# -*- coding: utf-8 -*-

from flask import Flask, render_template, jsonify, request

import time

import os

import base64

app = Flask(__name__)

UPLOAD_FOLDER = 'E:\myupload\picture'

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

basedir = os.path.abspath(os.path.dirname(__file__))

ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'xls', 'JPG', 'PNG', 'xlsx', 'gif', 'GIF','mp4'])

# 用于判断文件后缀

def allowed_file(filename):

return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

# 上传文件

@app.route('/api/upload', methods=['POST'], strict_slashes=False)

def api_upload():

file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER'])

if not os.path.exists(file_dir):

os.makedirs(file_dir)

f = request.files['myfile'] # 从表单的file字段获取文件,myfile为该表单的name值

if f and allowed_file(f.filename): # 判断是否是允许上传的文件类型

fname = f.filename

print fname

ext = fname.rsplit('.', 1)[1] # 获取文件后缀

unix_time = int(time.time())

new_filename = str(unix_time) + '.' + ext # 修改了上传的文件名

f.save(os.path.join(file_dir, new_filename)) # 保存文件到upload目录

print new_filename

token = base64.b64encode(new_filename)

print token

return jsonify({"errno": 0, "errmsg": "上传成功", "token": token})

else:

return jsonify({"errno": 1001, "errmsg": "上传失败"})

if __name__ == '__main__':

app.run(debug=True)

2 Android端代码实现

代码分三部分:

分别是xml布局文件,Activity类,和Okhttp网络通信类。

2.1 xml布局文件

activity_video_upload.xml:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:layout_width="wrap_content"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:layout_height="60dp"

android:layout_marginTop="80dp"

android:orientation="horizontal">

android:layout_width="match_parent"

android:layout_height="50dp"

android:layout_gravity="center_vertical"

android:gravity="center"

android:text="视频名称:"

android:textColor="@color/black2"

android:textSize="18dp"/>

android:id="@+id/upload_video_name"

android:layout_width="280dp"

android:layout_height="50dp"

android:layout_gravity="center_vertical"

android:hint="请输入上传视频名称"

android:layout_marginLeft="5dp"

android:textSize="18dp"

/>

android:id="@+id/video_select"

android:layout_width="match_parent"

android:layout_height="44dp"

android:layout_marginLeft="100dp"

android:layout_marginRight="100dp"

android:layout_marginTop="80dp"

android:background="@drawable/exit_btn_blue"

android:text="选择视频"

android:textStyle="bold"

android:textColor="@android:color/white"

android:textSize="20sp"/>

android:id="@+id/video_upload"

android:layout_width="ma

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42423852/article/details/116226603

智能推荐

ACL 2021之后是EMNLP 2021(征稿通知)-程序员宅基地

文章浏览阅读4.4k次。点击上方,选择星标或置顶,每天给你送干货!来自:哈工大讯飞联合实验室EMNLP(Conference on Empirical Methods in Natural Language Pr..._acl2021时间线

新手程序员怎么在复杂的代码中寻找bug ?-程序员宅基地

文章浏览阅读276次,点赞3次,收藏4次。想体验跟下载开源商城系统的在复杂代码中寻找bug是每个程序员都必须面对的挑战。bug的存在可能导致程序运行异常,影响软件的质量。本文将探讨复杂代码中bug的成因与识别,以及如何在实践中运用调试工具、代码审查、静态分析、单元测试、集成测试、日志分析、调试策略等方法来提高新手程序员在复杂代码中寻找bug的能力。首先,我们需要了解复杂代码中bug的成因。随着软件规模的不断扩大,程序员在编写代码时可能会忽略一些细节,导致代码逻辑不清晰、耦合度高、可读性差等问题。

Tensorflow加载训练模型可视化网络结构特征图_tensorflow自定义模型并可视化模型结构-程序员宅基地

文章浏览阅读1.9k次。在深度学习研究中,我们对于网络模型的学习过程的认识,大多是以一个黑盒的形式呈现出来的。网络结构中卷积层通过训练数据学习到怎样的特征,特征图是什么样的,对我们而言是隐晦难懂的,为此我们可以通过可视化特征图的方法,以图片的形式将网络结构中某一层特征图显示出来。环境:Tensorflow1.X需要的包:import matplotlib as plt from pylab import *过程,首先将网络中需要可视化网络层张量返回到加载模型的验证过程的文件中,然后将运行该张量,得到nump..._tensorflow自定义模型并可视化模型结构

利用SolrJ操作solr API_solrj 操作solr-程序员宅基地

文章浏览阅读848次。使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ通过封装httpClient方法,来操作solr的API的。即SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作添加jar包:首先,你需要在你的web项目中添加SolrJ需要的jar包,这些jar包在你所下载的Solr包中都可以找到(我下载的是solr-4.10.0.zip),包括_solrj 操作solr

城市内涝水文水动力模型:慧天【HTWATER】-程序员宅基地

文章浏览阅读314次,点赞4次,收藏6次。慧天排水数字化分析平台针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行地表水文、管网水力、水质过程的模拟计算。

骚操作-程序员宅基地

文章浏览阅读204次。//巧妙实现数字间有空格,末尾没空格 int f=0; set<int >::iterator it; for(it=ans.begin();it!=ans.end();it++){ if(f) cout<<" "; else f=1; cout<< *it; }保留两位小数且四...

随便推点

FILCO:蓝牙键盘配对教程_filco蓝牙配对教程-程序员宅基地

文章浏览阅读6.4w次。FILCO:蓝牙键盘配对教程1 配对:ctrl + alt + fn 红蓝一起亮2 选择设备占用的数字(红灯闪烁,此时按下数字1或者2或者3或者你想要的数字)3 打开蓝牙 选择设备连接。然后会有pin码配对4 键盘上输入pin码,然后回车5 修改键盘 command和alt(即option)件位置。(默认alt键对应command位置)系统偏好配置->键盘->修饰键..._filco蓝牙配对教程

超声波清洗机线路板设计_自制超声波清洗机主板-程序员宅基地

文章浏览阅读192次。小型超声波清洗机线路俩个大安培的IGBT功率管,确保了小型超声波清洗机线路开机避免瞬间冲击线路板造成烧坏,小型超声波清洗机线路多层保护,具有过压过载过流宝华等。小型超声波清洗机线路板线性脉冲方式驱动,超声波清洗换能器频率自动追踪且20khz-40khz无级可调,功率10-100%控制灵活,功率损耗低,恒功率输出稳定,适用于多种超声波清洗应用环境。小型超声波清洗机线路应用包括超声波清洗机、线路板超声波清洗、实验室用超声波清、镜头超声波清洗机等。_自制超声波清洗机主板

VsCode放大缩小_vdcode配置字体变大-程序员宅基地

文章浏览阅读10w+次,点赞42次,收藏48次。今天瞎搞,不小心把vsCode 界面放大太多了。。。解决方法:Ctrl+ k Ctrl +s 进入快捷键设置。搜索 缩小 然后会出现缩小的快捷键按键缩小即可。 如果发现快捷键不管事。双击编辑。自定义快捷键。 我当时是 Ctrl+0 然后缩小的。 缩小完之后重置的快捷键_vdcode配置字体变大

【Linux系统】Linux EXT2文件系统_ext2explore-程序员宅基地

文章浏览阅读536次,点赞2次,收藏3次。Linux EXT2文件系统_ext2explore

android 拍照和相册选取照片并裁剪获取bitmap_android carmerax 拍照获取bitmap-程序员宅基地

文章浏览阅读1.4k次。android中在做拍照获取图片和相册获取图片,因为android手机的版本多样性,和有些手机对rom的定制化,经常会出现再一个版本中可用,换成另外的版本或者手机就不兼容了,下面的代码是兼容性比较强的实现方式。基本试用现在主流的手机。再次记录下。package com.example.android.toyvpn;import java.io.File;import java.io._android carmerax 拍照获取bitmap

安装Airsim并在Airsim仿真环境下进行DDPG DQN强化学习算法无人机训练_ddpg算法如何在无人驾驶仿真软件中仿真的-程序员宅基地

文章浏览阅读1.2w次,点赞9次,收藏129次。微软开源了基于虚幻4引擎的一款用于模拟无人机飞行的工具AirSim。用户可以用在虚幻引擎下模拟无人机的飞行并进行数据采集。非常适合做视觉算法的测试以及仿真环境的训练等等,下面介绍如何快速使用次仿真环境完成project的运行和使用。首先是要虚幻4引擎和airsim的安装,两篇讲得比较好的https://blog.csdn.net/Michael_Bzw/article/details/80..._ddpg算法如何在无人驾驶仿真软件中仿真的

推荐文章

热门文章

相关标签