打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
文件上传
1、上传文件(扩展)
(1)编程步骤
step1,设置表单的提交方式为"post",还要设置表单的enctype属性值为"multipart/form-data";
 比如:<form action="" method="post"enctype="multipart/form-data">
 
step2,在服务器端,不能够使用request.getParameter方法了,要使用InputStream request.getInputStream方法。
 此时,需要分析InputStream。一般使用一些工具(比如,apache提供的commons-fileupload)来分析这个InputStream。
-------------------------------------------------------------------------------------------------  
package web;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileUploadServlet extends HttpServlet {

public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//factory对象为解析器提供解析时的一些缺省的配置
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建一个解析器
ServletFileUpload sfu = new ServletFileUpload(factory);
//使用解析器解析inputStream
try {
/*
* 解析器将每一个表单域中的数据
* 封装到一个FileItem对象里面。
*/
List<FileItem> items = sfu.parseRequest(request);
/*
* 只需要遍历List<FileItem>集合,就可以
* 读取每一个表单域中的数据。
*/
for(int i=0;i<items.size();i++){
FileItem item = items.get(i);
if(item.isFormField()){
//普通的表单域
String uname = item.getString();
System.out.println(uname);
}else{
//上传文件域
ServletContext sctx = getServletContext();
//依据逻辑路径获得实际部署时的物理路径
String path = sctx.getRealPath("upload");
System.out.println("path:" + path);
//获得上传文件的名称
String filename = item.getName();
/*fileupload工具有一个bug,在某些操作系统上运行时,filename会包含路径,比如
d:\czh\man1.jpg
*/
filename = filename.substring(filename.lastIndexOf("/") + 1);
System.out.println("filename:" + filename);
File file = new File(path +File.separator + filename);
item.write(file);
}
}
} catch (Exception e) {
e.printStackTrace();
throw new ServletException(e);
}
}

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java 支持 超大上G , 多附件上传
hadoop网盘小项目介绍及相关代码下载1
java上传图片文件
Java Servlet – jQuery File Upload (multiple, drag&drop, progress…) | HMKCode
html5实现多文件的上传示例代码
使用commons-fileupload例子--孤独的日子
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服