您的位置:首页 > 其它

使用SmartUpload上传文件

2012-03-14 13:59 134 查看
SmartUpload组件特点

使用简单:编写少量代码,完成上传下载功能

能够控制上传内容

能够控制上传文件的大小、类型

缺点:目前已停止更新服务

环境准备

使用SmartUpload组件需要在项目中引入jspsmartupload.jar文件

将jspsmartupload.jar 添加到WEB-INF\lib目录下

需要设置表单的enctype属性

<form enctype="multipart/form-data" method="post">

Files类

封装了所有上传文件的信息集合

常用方法

public int getCount()  取得文件上传的数目

public File getFile(int index) 取得指定位置的File文件对象

public long getSize()取得上传文件的总长度

public Collection getCollection()将所有上传文件对象以Collection的形式返回

SmartUpload类

用于实现文件上传和下载的操作

常用方法

public final void initialize(PageContext pageContext) 执行上传和下载的初始化工作,必须实现

public void upload() 实现文件数据的上传,在initialize方法后执行

public int save(String pathName) 将全部上传文件保存到指定的目录下,并返回保存的文件个数

public void setAllowFilesList(String ExtList) 指定允许上传的文件扩展名,接收一个扩展名列表,以逗号分隔

public void setDeniedFilesList( String   fileList) 指定了禁止上传的文件扩展名列表,每个扩展名之间以逗号分隔

public void setMaxFileSize(long filesize) 设定每个文件允许上传的最大长度

public  void setTotalMaxFileSIze(long totalfilesize) 设定允许上传文件的总长度

上传文件的jsp代码

<%@ page contentType="text/html;charset=UTF-8" %>

<%response.setHeader("Pragma","No-cache"); %>

<%response.setHeader("Cache-Control","no-cache"); %>

<%response.setHeader("Expires","0");%>

<html>

<head>

<script language='Javascript'>

function doSubmit(){

var phone = document.getElementById('photo').value;

if(phone == ''){

alert('文件为空,请重新选择');

return;

}

document.getElementById('sform').submit();

}

</script>

<title>上传文件</title>

</head>

<body >

<div align='center'>

<form id='sform' action = "/YourProfile/upload" enctype="multipart/form-data" method="post">

选择文件:<input type="file" name="nfile" id='photo'>

</form>

<input type='button' onclick='doSubmit()' value='上传'/><br/>

</div>

</body>

</html>

处理文件上传servlet

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Iterator;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.DiskFileUpload;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String filePath = getServletContext().getRealPath("/"); //文件保存路径

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(4096);

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List items = upload.parseRequest(request);

Iterator iter = items.iterator();

while(iter.hasNext()){

FileItem item = (FileItem)iter.next();

if(item.isFormField()){ //普通表单域

String name = item.getFieldName();

String value = item.getString();

}else{ //上传文件域

String fileName = item.getName(); //文件名称

fileName = fileName.substring(fileName.lastIndexOf("\\") + 1,fileName.length());

String path = filePath + fileName;

System.out.println("文件上传到:" + path);

File file = new File(path);

item.write(file);

}

}

} catch (FileUploadException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

response.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

out.print("文件上传成功!");

out.flush();

out.close();

}

}
 
本文链接:http://www.snowdi.com/366.html →
转载请注明文章出自雪頔网
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息