package servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadServlet extends HttpServlet {
public FileUploadServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session=request.getSession(false);
if(session==null||session.getAttribute("type")==null)
{response.sendRedirect("/myweb/index.jsp");return;}
else{
request.setCharacterEncoding("gb2312");
String type=(String)session.getAttribute("type");
final long MAX_SIZE = 8 * 1024 * 1024;// 设置上传文件最大为 3M
// 允许上传的文件格式的列表
final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt",
"doc", "docx", "mp3", "wma", "m4a" };
response.setContentType("text/html");
// 设置字符编码为UTF-8, 这样支持汉字显示
response.setCharacterEncoding("UTF-8");
String couid=null;
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
DiskFileItemFactory dfif = new DiskFileItemFactory();
dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
dfif.setRepository(new File(request.getRealPath("/")
+ "UploadTemp"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
// 用以上工厂实例化上传组件
ServletFileUpload sfu = new ServletFileUpload(dfif);
// 设置最大上传尺寸
sfu.setHeaderEncoding("gb2312");
sfu.setSizeMax(MAX_SIZE);
PrintWriter out = response.getWriter();
// 从request得到 所有 上传域的列表
List fileList = null;
try {
fileList = sfu.parseRequest(request);
} catch (FileUploadException e) {// 处理文件尺寸过大异常
if (e instanceof SizeLimitExceededException) {
out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />");
if(type.equals("teacher"))
out.println("<a href=\"/myweb/teacher/t_file.jsp\" target=\"_top\">返回</a>");
else {
out.println("<a href='javascript:self.close()'>确 定</a>");
}
return;
}
e.printStackTrace();
}
// 没有文件上传
if (fileList == null || fileList.size() == 0) {
out.println("请选择上传文件<p />");
if(type.equals("teacher"))
out.println("<a href=\"/myweb/teacher/t_file.jsp\" target=\"_top\">返回</a>");
else {
out.println("<a href='javascript:self.close()'>确 定</a>");
}
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" />等)
if ( fileItem!=null&&fileItem.isFormField()){
if(fileItem.getFieldName().equals("couid")){
couid=fileItem.getString();
}
}
else if(fileItem!=null&&!fileItem.isFormField()){
// 得到文件的完整路径
path = fileItem.getName();
// 得到文件的大小
size = fileItem.getSize();
if ("".equals(path) || size == 0) {
out.println("请选择上传文件<p />");
if(type.equals("teacher"))
out.println("<a href=\"/myweb/teacher/t_file.jsp\" target=\"_top\">返回</a>");
else {
out.println("<a href='javascript:self.close()'>确 定</a>");
}
return;
}
// 得到去除路径的文件名
String t_name = path.substring(path.lastIndexOf("\\") + 1);
// 得到文件的扩展名(无扩展名时将得到全名)
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("请上传以下类型的文件<p />");
for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)
out.println("*." + allowedExt[allowFlag]
+ " ");
out.println("<p /><a href=\"upload.html\" target=\"_top\">返回</a>");
return;
}
*/
//long now = System.currentTimeMillis();
// 根据系统时间生成上传后保存的文件名
// String prefix = String.valueOf(now);
// 保存的最终文件完整路径,保存在web根目录下的Uploaded目录下
//教师上传文件的处理
beans.Jdbc db=new beans.Jdbc();
if(type.equals("teacher")){
String u_name = request.getRealPath("/") + "Uploaded/"
+ t_name;
try {
// 保存文件
fileItem.write(new File(u_name));
response.sendRedirect("/myweb/teacher/t_file.jsp");
} catch (Exception e) {
e.printStackTrace();
}
String teaid=(String)session.getAttribute("id");
String mysqlt="insert into file(teaid,couid,filename) values('"+teaid+"','"+couid+"','"+t_name+"')";
db.update(mysqlt);
db.close();
}
//学生上传文件处理
else if(type.equals("student")){
String stuid=(String)session.getAttribute("id");
String sfname=couid+stuid+"."+t_ext;
String workname=request.getRealPath("/")+"Uploaded/"+sfname;
try {
// 保存文件
fileItem.write(new File(workname));
out.println("<div style='text-align:center;margin:20px;'>作业提交成功!</div>");
out.println("<div style='text-align:center;'><a href='javascript:self.close()'>关闭</a></div>");
} catch (Exception e) {
e.printStackTrace();
}
String mysqls="update cs set work='"+sfname+"' where stuid='"+stuid+"' and couid='"+couid+"';";
db.update(mysqls);
db.close();
}
}}}}
public void init() throws ServletException {
// Put your code here
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
.rar (45个子文件)
myweb
.project 850B
.settings
org.eclipse.wst.common.component 398B
org.eclipse.jdt.core.prefs 330B
org.eclipse.wst.common.project.facet.core.xml 293B
org.eclipse.jst.common.project.facet.core.prefs 316B
src
servlet
FileUploadServlet.java 6KB
beans
Jdbc.java 1KB
build
classes
servlet
FileUploadServlet.class 6KB
beans
Jdbc.class 2KB
WebContent
login.jsp 2KB
WEB-INF
web.xml 2KB
lib
commons-io-1.3.2.jar 86KB
commons-fileupload-1.2.jar 52KB
index.jsp 2KB
examples.html 2KB
META-INF
MANIFEST.MF 39B
teacher
t_file.jsp 3KB
index.jsp 4KB
pub_art.jsp 1KB
scores.jsp 954B
t_read.jsp 2KB
t_art.jsp 3KB
delete.jsp 1KB
response.jsp 650B
student
index.jsp 4KB
s_cs.jsp 2KB
s_read.jsp 2KB
s_filelist.jsp 2KB
s_artlist.jsp 2KB
upwork.htm 998B
Uploaded
css.css 2KB
changepass.jsp 3KB
admin
addts.jsp 2KB
index.jsp 4KB
deletets.jsp 931B
addcs.jsp 1KB
deletecs.jsp 897B
response.jsp 650B
data.jsp 8KB
addData.jsp 3KB
deleteData.jsp 2KB
a_setcs.jsp 5KB
loginout.jsp 528B
download.jsp 2KB
UploadTemp
.classpath 488B
共 45 条
- 1
资源评论
yully709
- 粉丝: 1
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功