`
mmdev
  • 浏览: 12915955 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

WEB-Android两种方式实现文件上传

 
阅读更多

1、客户端上传文件

WEB网页实现文件上传。
主要有一条:设置enctype="multipart/form-data">

Android实现文件上传。
1、获取输入框中输入的手机上文件的路径.
String filePath = et_file_path.getText().toString().trim();

2、创建文件,并判断文件路径是否存在.
File file = new File(filePath);
if(!file.exists()){
Toast.makeText(this,"文件不存在",0).show();
return;
}

3、准备好浏览器
HttpClient client = new DefaultHttpClient();

4、准备好要上传的文件-Part数组(可以支持多文件上传)和地址栏PostMethod
Part [] parts = {new FilePart("file",file)};
PostMethod postMethod = new PostMethod("http://192.168.1.10/login/LoginServlet");
//这里的上传地址可以通过xml资源的形式配置:
//String servlerurl = getResources().getString(R.String.serverurl);

5、将数据放到地址栏中,并设置为enctype = multipart
postMethod.setRequestEntity(new MultipartRequestEntity(parts,postMethod.getParams()));

6、点击上传按钮,执行上传方法,得到响应码
int code = client.executeMethod(postMethod);
7、判断响应码并给出响应消息
if (status == 200) {
Toast.makeText(this, "上传文件成功", 0).show();
} else {
Toast.makeText(this, "上传文件失败", 0).show();
}

2、客户端接收文件上传。用到了apache的FileUpload组件。需要导入的jar包:
commons-fileupload-***.jar
commons-io-***.jar

1、判断是不是满足:enctype="multipart/form-data",如果不是就得不到上传的文件。
boolean isMultipart = ServletFileUpload.isMultipartContent(request);

2、得到处理上传内容的对象ServletFileUpload
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);

3、设置编码
upload.setHeaderEncoding("utf-8");

4、运用upload对象解析request请求,得到表单里的元素item
List<FileItem> items = upload.parseRequest(request);

5、循环遍历,如果是普通元素就打印,如果是文件就用item.write()写入到服务器的文件中
for(FileItem item:items){
if(item.isFormField()){
String name1 = item.getFieldName();//得到请求参数的名称
String value = item.getString("UTF-8");//得到参数值
System.out.println(name1+ "="+ value);
}else{
item.write(new File(dir,filename));
}
}

<!#####################################################################################################!>

Android客户端代码:
public void uploadFile(View view) {
String filepath = et_file_path.getText().toString().trim();
File file = new File(filepath);
if (!file.exists()) {
Toast.makeText(this, "文件不存在", 0).show();
return;
}

PostMethod filePost = null;
try {
Part[] parts = { new FilePart("file", file) };
filePost = new PostMethod(getResources().getString(
R.string.serverurl));
filePost.setRequestEntity(new MultipartRequestEntity(parts,
filePost.getParams()));
HttpClient client = new HttpClient();

int status = client.executeMethod(filePost);
if (status == 200) {
Toast.makeText(this, "上传文件成功", 0).show();
} else {
Toast.makeText(this, "上传文件失败", 0).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "服务器异常", 0).show();
} finally {
filePost.releaseConnection();
}
}


服务器端Servlet代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
String realpath = request.getSession().getServletContext().getRealPath("/files");
System.out.println(realpath);
File dir = new File(realpath);
if(!dir.exists()) dir.mkdirs();

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> items = upload.parseRequest(request);
for(FileItem item : items){
if(item.isFormField()){
String name1 = item.getFieldName();//得到请求参数的名称
String value = item.getString("UTF-8");//得到参数值
System.out.println(name1+ "="+ value);
}else{
item.write(new File(dir, System.currentTimeMillis()+ item.getName().substring(item.getName().lastIndexOf ("."))));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}else{
doGet(request, response);
}
}
分享到:
评论

相关推荐

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    android上传图片到服务器,asp.net端接收保存和删除

    android端提供两种上传方式,web端提供两种接收方式,一种为aspx文件和web服务方式(asmx),android:xUtils三方工具,和自带的上传方式。。。xUtils方式解决了某些手机在上传照片通过拍照方式不能获取照片的bug。...

    黎活明android教程的全程PPT

    编写代码完成添删改查操作(两种实现方法) E.事务的实现 F.采用ListView实现数据列表显示 2&gt; 采用ContentProvider对外共享数据 第四天 1&gt; 往通信录添加联系人,和获取联系人 2&gt; 网络--获取数据(图片、网页、xml...

    传智播客Android视频教程-课程源码.rar

    编写代码完成添删改查操作(两种实现方法) E.事务的实现 F.采用ListView实现数据列表显示 2&gt; 采用ContentProvider对外共享数据 第四天 1&gt; 往通信录添加联系人,和获取联系人 2&gt; 网络--获取数据(图片、网页、xml...

    web-graduation-project:该项目有两个视图来自 web 项目和 android 视图 android 视图有助于快速访问会议 web 项目是可以管理会议纪要的主要项目

    web-graduation-project:使用 MVC 的 Meeting_Minutes 项目 该项目有两个视图来自 web 项目和 android 视图 android 视图有助于快速访问会议 web 项目是可以管理会议...创建两种类型的会议 私人和公开会议 搜索特定主

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    html5-qrcode:跨平台HTML5 QR码阅读器

    (现在支持条形码:) ... 使用此轻量级库可以轻松/快速地将QR码,条形码和其他常见的代码扫描功能集成到您的Web应用... 注意:这不会将文件上传到任何服务器-一切都在本地完成。 图:在Android Pixel 3上运行 图:在And

    java开源包3

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    JAVA上百实例源码以及开源项目源代码

    凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包1

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    【PerfDog性能狗 v5.1.210204】移动全平台性能测试分析专家+APP应用游戏性能测试

    测试结束时,可自主选择两种方式保存处理(Upload/Save)性能数据: 将性能数据同步上传PerfDog云端web看板 本地导出Excel文件 记录回放(方便回看分析) 打开要回放文件 回放结果如图: 批注及标定(鼠标左键双击,则...

    java开源包10

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包11

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包2

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包6

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包5

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包8

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包7

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

Global site tag (gtag.js) - Google Analytics