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 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
android端提供两种上传方式,web端提供两种接收方式,一种为aspx文件和web服务方式(asmx),android:xUtils三方工具,和自带的上传方式。。。xUtils方式解决了某些手机在上传照片通过拍照方式不能获取照片的bug。...
编写代码完成添删改查操作(两种实现方法) E.事务的实现 F.采用ListView实现数据列表显示 2> 采用ContentProvider对外共享数据 第四天 1> 往通信录添加联系人,和获取联系人 2> 网络--获取数据(图片、网页、xml...
编写代码完成添删改查操作(两种实现方法) E.事务的实现 F.采用ListView实现数据列表显示 2> 采用ContentProvider对外共享数据 第四天 1> 往通信录添加联系人,和获取联系人 2> 网络--获取数据(图片、网页、xml...
web-graduation-project:使用 MVC 的 Meeting_Minutes 项目 该项目有两个视图来自 web 项目和 android 视图 android 视图有助于快速访问会议 web 项目是可以管理会议...创建两种类型的会议 私人和公开会议 搜索特定主
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
(现在支持条形码:) ... 使用此轻量级库可以轻松/快速地将QR码,条形码和其他常见的代码扫描功能集成到您的Web应用... 注意:这不会将文件上传到任何服务器-一切都在本地完成。 图:在Android Pixel 3上运行 图:在And
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
测试结束时,可自主选择两种方式保存处理(Upload/Save)性能数据: 将性能数据同步上传PerfDog云端web看板 本地导出Excel文件 记录回放(方便回看分析) 打开要回放文件 回放结果如图: 批注及标定(鼠标左键双击,则...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...
Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...