Android开发之路十四-----------Android中实现视频文件的上传
来源:互联网 发布:如何修改路由器mac地址 编辑:程序博客网 时间:2024/04/19 15:04
Android中实现视频文件的上传
协议分析
l 运行服务器端web应用,
l 上传视频文件,同时用httpwatch捕获数据包,并进行讲解:
POST /videoweb/video/manage.do HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://192.168.1.102:8080/videoweb/
Accept-Language: zh-cn,en-GB;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)
Content-Type: multipart/form-data; boundary=---------------------------7db4e3237099a
Accept-Encoding: gzip, deflate
Host: 192.168.1.102:8080
Content-Length: 3224599
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=D677BD29B65CD7D9A973767BEB945CCF
-----------------------------7db4e3237099a
Content-Disposition: form-data; name="method"
save
-----------------------------7db4e3237099a
Content-Disposition: form-data; name="name"
YMGM
-----------------------------7db4e3237099a
Content-Disposition: form-data; name="timelength"
1
-----------------------------7db4e3237099a
Content-Disposition: form-data; name="video"; filename="F:\2011_Android\14\YMGM.rm"
Content-Type: application/octet-stream
…
-----------------------------7dbcb1c10762--
注意:详细解释分割线的使用,包括分割线的定义,使用
定义:
boundary=---------------------------7db4e3237099a
分割线的定义和使用
---------------------------7db4e3237099a //定义
-----------------------------7db4e3237099a //实体参数分割线,前面比定义时多了两个“-”
-----------------------------7db4e3237099a-- //实体参数结束分割线,后面比定义时多了两个“-”
上传文件的类型描述(可以参看tomcat\conf\web.xml文件中的字典)
下面是关于实体内容中上传文件的基本信息描述:
Content-Disposition: form-data;name="video"; filename="F:\2011_Android\14\YMGM.rm"
Content-Type: application/octet-stream
注意数清楚回车和换行的个数
客户端应用的实现
1、 讲解工具类FormFile
2、 讲解工具类SocketHttpRequester
将上面用到的工具类复制到工程中
3、 具体操作
添加权限
<uses-permission android:name="android.permission.INTERNET" />
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
布局:增加两个UI组件
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/videoFile" />
<EditText
android:id="@+id/videoFileEt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="YMGM.rm" />
VideoService:增加方法saveVideo
public static boolean saveVideo(String name, String timelength,
File file) throws Exception{
String path =
"http://192.168.1.102:8080/videoweb/video/manage.do";
Map<String, String> params = new HashMap<String, String>();
params.put("name", name);
params.put("timelength", timelength);
params.put("method", "save");
FormFile formfile = new FormFile(file.getName(), file, "video", "application/octet-stream");
return SocketHttpRequester.post(path, params, formfile);
}
activity
package cn.class3g.video;
…
public class VideoClientActivity extends Activityimplements OnClickListener {
EditText nameEt, timeLengthEt, fileEt;
Button saveBtn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.save_video_info);
findViews();
}
private void findViews() {
nameEt = (EditText) this.findViewById(R.id.nameEt);
timeLengthEt = (EditText) this.findViewById(R.id.timeLengthEt);
fileEt = (EditText) this.findViewById(R.id.videoFileEt);
saveBtn = (Button) this.findViewById(R.id.saveBtn);
saveBtn.setOnClickListener(this);
}
public void onClick(View v) {
String videoName = nameEt.getText().toString();
String timeLength = timeLengthEt.getText().toString();
String videoFile = fileEt.getText().toString();
try {
File file = new File(Environment.getExternalStorageDirectory(),
videoFile);
if (VideoService.saveVideo(videoName, timeLength, file)) {
Toast.makeText(this, R.string.success, 1).show();
} else {
Toast.makeText(this, R.string.error, 1).show();
}
} catch (Exception e) {
Log.e("TAG", e.toString());
Toast.makeText(this, R.string.error, Toast.LENGTH_SHORT).show();
}
}
}
测试:
先把测试用的视频文件拖入模拟器的sd card中
运行程序,执行上传,查看服务器是否有被上传文件
- Android开发之路十四-----------Android中实现视频文件的上传
- Android应用开发之实现视频文件的上传
- android开发之播放视频文件
- Android模拟器中实现音、视频文件的断点播放
- Android游戏开发之触摸轨迹曲线的实现处理(二十四)
- [Android] 本地视频文件的缩略图实现方案
- Android开发之httpclient文件上传实现
- Android中如何获取视频文件的缩略图
- Android中如何获取视频文件的缩略图
- Android中如何获取视频文件的缩略图
- Android中如何获取视频文件的缩略图
- Android中如何获取视频文件的缩略图
- Android中如何获取视频文件的缩略图
- Android中视频文件的下载和播放
- Android应用开发音视频文件
- android 选择视频文件 上传到后台服务器
- android 选择视频文件 上传到后台服务器
- Android中下载音视频文件
- Perl操作MySQL数据库
- php.ini 的几点安全配置
- LNMP一键安装包0.7版配置pathinfo模式
- VC 为程序创建快捷方式的详细讲解
- xml那些特殊字符需转义
- Android开发之路十四-----------Android中实现视频文件的上传
- 【龙芯文化】回望50年
- javascript PPK
- mmc整体架构
- 3.3v电压不稳
- 一桐对第三方SEO博客的一点拙见
- iphone----NSMutableSet
- Extjs框架viewport总结之最简单的viewport案例图解(入门专用)
- php 判断是否为移动设备访问