一般情况下, 在服务器端可以利用Servlet组件接收客户端数据, 但要注意, 客户端传递的数据类型将决定Servlet
的数据接收方式
1) 传递纯文本数据 , Servlet 可以直接采用request.getParameter的形式接收数据
String 参数值 = request.getParameter(参数名);
2) 2进制数据 + 文本数据, Servlet 可以采用jspsmartupload第3方jar包接收数据
jspSmartUpload是一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点:
1、使用简单。在JSP文件中仅仅书写三五行java代码就可以搞定文件的上传或下载,方便。
2、能全程控制上传。利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。
3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。
4、下载灵活。仅写两行代码,就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下,都可以利用jspSmartUpload进行下载
注意事项:
1) Servlet 只要处理doPost就可以, 因为文件上传不能用get
2) 把 jspsmartupload.jar 拷贝到项目的libs目录中
3) 文件上传核心代码
// 1. 创建SmartUpload对象
SmartUpload su = new SmartUpload();
// 2. 对su进行初始化
su.initialize(this.getServletConfig(),
request, response);
PrintWriter out = response.getWriter();
try {
// 指定文件的大小限制
//su.setMaxFileSize(1024*100); // 单一一个文件的最大长度 //su.setTotalMaxFileSize(1024*200); // 所有文件的长度总和限制 su.setAllowedFilesList("jpg,png,bmp"); // 允许上传的文件扩展名
// 3. 接收文件数据
su.upload();
// 4. 保存文件到指定目录并且得到文件的数量
int count = su.save("/upload");// webroot目录中
// 要注意, 最后要去到tomcat我们的项目upload目录中查看图片
// 5. 获取剩下的文本数据 **
String name = su.getRequest().getParameter("name"); String cls = su.getRequest().getParameter("cls"); name = URLDecoder.decode(name, "UTF-8"); cls = URLDecoder.decode(cls, "UTF-8"); System.out.println("文件数量"+count+" "+name+" "+cls); out.println("success"); } catch (SmartUploadException e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); e.printStackTrace(); out.println("error"); }