原文出处:http://blog.sina.com.cn/s/blog_59d6717c0100e62l.html
SmartUpload上传图片
目标:在Jsp页面中实现文件上传
初级篇
文件上传是我们程序中会经常使用到的功能,针对于上传的技术也非常多!
常用的上传组件:
Apache commns FilUpload
JavaZoom的UploadBean
jspSmartUpload
Struts标签中的<html:file></ html:file >
那么在此介绍两种上传方式
使用SmartUpload组建进行上传
使用Struts的<html:file>标签进行上传
我们新建一个Java Web 工程,这里使用纯粹的jsp进行上传和显示功能的实现。
我们需要在我们的工程中添加 smartUpload.jar包
之后我们编写 index.jsp
Index.jsp Source
需要注意的设置表单的enctype="multipart/form-data" 这个值我们可以再Dreamweaver中选 |
我们将表单提交到另一个处理上传请求的doUploadjsp页面 |
我们现在编写处理文件上传的页面 doUpload.jsp
下面是doUpload.jsp 页面中的源代码
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@page import="com.jspsmart.upload.File"%>
<%@page import="com.jspsmart.upload.Files"%>
<%@page import="com.jspsmart.upload.SmartUpload"%>
<%
//实例化上传组件
SmartUpload upload = new SmartUpload();
//初始化上传组件
upload.initialize(this.getServletConfig(), request, response);
//开始上传
upload.upload();
//获取上传的文件列表对象
Files f = upload.getFiles();
//获取文件对象
File fil = f.getFile(0);
//去的文件后缀
String ext = fil.getFileExt();
//判断文件类型是否是jpg格式
if (!(ext.equals("jpg"))) {
out
.println("<script type='text/javascript'>alert('文件类型错误');location.replace('index.jsp');</script>");
return;
}
//满足条件进行文件的上传 需要注意的是upload使我们webRoot文件夹下的一个目录
fil.saveAs("upload/" + fil.getFileName());
%>
至此我们就完成了一个最简单的图片上传示例。我们部署测试下!
之后我们打开我们的工程下的upload文件夹查看文件是否上传成功,在这里需要注意的是我们查看的工程一定是部署在服务器下的那份,而不是源文件! 够则查看不到!
高级篇
在上面我们完成了一个简单的文件上传示例,很简单!
那么在此我们做一些完善和修改比如当用户选择了文件后我们应给与用户显示预览窗口,等待用户确认上传文件,判断文件大小,当上传完成图片后进行图片的显示,图片存放在服务器上的文件名应该以时间命名等。
首先我们需要做的是在index.jsp页面中当用户选择可上传文件后,应该显示图片预览窗口!
编辑我们的index.jsp
我们可以在处理上传的页面调用组建中的方法 限制文件的大小和非法后缀
Struts上传的示例以后再写吧! 关于多文件上传其实也是一样的只要去修改处理上传文件的那个jsp就可以,具体的就是可是使用循环遍历Files集合取出File 保存。在服务器上我们保存的文件应该是以时间去命名我们的图片。
注意:
很多人在做了上传之后 文件时能上传了 但是表单中的其他数据却都不能提交了
使用request.getParameter(""); 打印出来的值是null
这个时候我们需要用到SmartUpload类的getRequest();方法来取得request对象
之后的操作和以前的操作一样例如
SmartUpload upload=new SmartUpload();
upload.getRequest().getParameter("txtName");