您的位置:首页 > Web前端 > JavaScript

jsp实现文件上传以及表单验证

2012-11-12 22:21 465 查看
废话不多说,这里面涉及到两个文件,下面看例子:

Upload.java

 

public class Upload extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("utf-8");
final long MAX_SIZE = 300 * 1024 * 1024;// 设置上传文件最大值

// 允许上传的文件格式的列表

final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "png",

"swf", "bmp"};

response.setContentType("text/html");

// 设置字符编码为UTF-8, 统一编码,处理出现乱码问题

response.setCharacterEncoding("UTF-8");

// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload

DiskFileItemFactory dfif = new DiskFileItemFactory();

dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘

dfif.setRepository(new File(request.getRealPath("/")

+ "ImagesUploadTemp"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录

// 用以上工厂实例化上传组件

ServletFileUpload sfu = new ServletFileUpload(dfif);

// 设置最大上传大小

sfu.setSizeMax(MAX_SIZE);

PrintWriter out = response.getWriter();

// 从request得到所有上传域的列表

List fileList = null;

try {

fileList = sfu.parseRequest(request);

} catch (Exception e) {// 处理文件尺寸过大异常

if (e instanceof SizeLimitExceededException) {

out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />");
out.println("<script>parent.callback(' 注意文件大小!!')</script>");
return;

}

e.printStackTrace();

}

// 没有文件上传
// out.println("<script>parent.callback(' 请选择上传文件!')</script>");
if (fileList == null || fileList.size() == 0) {

out.println("<script>parent.callback(' 请选择上传文件!')</script>");//////callback()函数是show.jsp文件中的回传函数

return;

}

// 得到所有上传的文件

Iterator fileItr = fileList.iterator();

// 循环处理所有文件

while (fileItr.hasNext()) {

FileItem fileItem = null;

String path = null;

long size = 0;

// 得到当前文件

fileItem = (FileItem) fileItr.next();

// 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
int count=1;
//  if (fileItem == null || fileItem.isFormField()) {
//	  if( fileItem.isFormField()){

//  }
//System.out.println(fileItem.getName()+"="+request.getParameter(fileItem.getName()));
//	System.out.println(fileItem.getFieldName()+"="+fileItem.getString());

//	System.out.println(fileItem.getString());
//	continue;

//}

// 得到文件的完整路径

path = fileItem.getName();

// 得到文件的大小

size = fileItem.getSize();

if ("".equals(path) || size == 0) {

// out.println("<script>parent.callback(' 请选择上传文件!')</script>");//
//
//		return;
continue;

}

// 得到去除路径的文件名

String t_name = path.substring(path.lastIndexOf("\\") + 1);

System.out.println(t_name);

// 得到文件的扩展名(无扩展名时将得到全名)

String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);

// 拒绝接受规定文件格式之外的文件类型

int allowFlag = 0;

int allowedExtCount = allowedExt.length;

for (; allowFlag < allowedExtCount; allowFlag++) {

if (allowedExt[allowFlag].equals(t_ext))

break;

}

if (allowFlag == allowedExtCount) {

out.println("<script>parent.callback(' 注意图片文件类型!')</script>");

for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)

out.println("*." + allowedExt[allowFlag] + " ");

return;

}

long now = System.currentTimeMillis();

// 根据系统时间生成上传后保存的文件名

String prefix = String.valueOf(now);

// 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下

String u_name = request.getRealPath("/") + "ImagesUploaded/"

+ prefix + "." + t_ext;

//String filename = prefix + "." + t_ext;

//根据原文件名保存文件

String filename=t_name;

try {

fileItem.write(new File(u_name));///////////////////将文件上传保存到指定目录

System.out.println(filename+"");

//out.println("文件上传成功. 已保存为: " + t_name

// + " 文件大小: " + size + "字节<p />");
out.println("<script>parent.callback(' 将图片路径插入编辑器: "+request.getContextPath()+"/ImagesUploaded/"+prefix + "." + t_ext+"')</script>");

} catch (Exception e) {

e.printStackTrace();

}

}

}

}


show.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<!-- javascript s -->
<script type="text/javascript">
function

callback(msg) {
document.getElementById("file").outerHTML = document.getElementById("file").outerHTML;
document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>";
}

function t1(){
var form=document.getElementById("formfile");
form.submit();
}
</script>

</head>

<body>

<div>

<form action="oj_manage/upload" id="formfile" name="formfile" encType="multipart/form-data" method="post" target="hidden_frame" >
<input type="file" id="file" name="filepath" style="width:450">
<input type="button" value="上传文件" onclick="t1()"><span id="msg"> </span>
<br>
<font color="red">支持JPG,JPEG,GIF,BMP,SWF,BNG文件的上传</font>
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
</form>

</body>
</html>


 

 

其中jsp中还涉及到表单的验证!!!详情可以看:

http://www.blogjava.net/sliverfancy/archive/2012/02/25/370767.html

 

下面是一些文件上传的截图:

 

 



 



 



 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: