📄 uploadevent.java~24~
字号:
package stumanage.events;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
import java.util.*;
import java.io.*;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import java.sql.DriverManager;
import org.apache.commons.fileupload.FileUploadException;
import java.sql.PreparedStatement;
import java.sql.Connection;
import javax.servlet.http.HttpSession;
import stumanage.beans.*;
import java.util.regex.*;
public class UploadEvent
extends EventHandleBase {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
private UserInfo student = new UserInfo();
public UploadEvent() {
}
/**
* Override process:上传文件
* @param sc ServletContext
* @param request HttpServletRequest
* @param response HttpServletResponse
* @throws IOException
* @throws ServletException
*/
public void process (ServletContext sc,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
HttpSession session = request.getSession();
student = (UserInfo)session.getAttribute("user");
response.setContentType(CONTENT_TYPE);
//System.out.println(request.getParameter("subject")); //for test
//System.out.println(request.getParameter("tNo")); //for test
//System.out.println(request.getParameter("filename")); //for test
PrintWriter out = response.getWriter();
try {
System.out.println("enter the first try");
DiskFileUpload fu = new DiskFileUpload();
/**
* 设置允许用户上传的文件最大值 单位:字节
*/
fu.setSizeMax(2*1024*1024);
/**
* 设置最多只允许在内存中的数据大小 单位:字节
*/
fu.setSizeThreshold(4096);
/**
* 设置不能放在内存中的数据临时存放的目录
*/
fu.setRepositoryPath("f:\\temp");
/**
* 开始读取上传信息
*/
System.out.println("信息设置成功");
List fileItems = fu.parseRequest(request);
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
String temp1 = null;
String subject = null;
String tno = null;
//正则匹配,过滤路径取文件名
String regExp=".+\\\\(.+)$";
//过滤掉的文件类型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while(iter.hasNext()){
System.out.println("enter the while"); //for test
FileItem item = (FileItem)iter.next();
if(item.isFormField()) {
temp1 = item.getFieldName();
/**
* 这里用request.getParameter("subject")得到的是null
*/
if (temp1.equalsIgnoreCase("subject")) {
subject = item.getString();
System.out.println(subject); //for test
}
else if(temp1.equalsIgnoreCase("tNo")) {
tno = item.getString();
}
continue;
}
//忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();
System.out.println(name);
long size = item.getSize();
if ( (name == null || name.equals("")) && size == 0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result) {
for (int temp = 0; temp < errorType.length; temp++) {
if (m.group(1).endsWith(errorType[temp])) {
throw new IOException(name + ": wrong type");
}
}
try {
int byteRead = 0;
InputStream inStream = item.getInputStream();
InputStreamReader reader = new InputStreamReader(inStream);
/*char [] buf = new char[5];
reader.read(buf);
String test = new String(buf);
String newString = new String(test.getBytes("ISO8859_1"));
System.out.println(newString); // for test */
/*byte [] b = new byte[50];
inStream.read(b);
String test = new String(b);
String newTest = new String(test.getBytes("ISO8859_1"));
System.out.println(newTest); //for test */
/*String test ="contentType= " + item.getContentType();
test = test + "getString() = " + item.getString();
test = test + "getString(ISO8859_1) = " + item.getString("ISO8859_1");
System.out.println(test); // for test */
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dsn = "jdbc:odbc:info";
Connection con = DriverManager.getConnection(dsn);
String temp =
"insert into PaperInfo(Sno,TNo,Subject,PaperContent,flag) values(?,?,?,?,'no')";
PreparedStatement pstmt = con.prepareStatement(temp);
pstmt.setString(1, student.getUserID());
pstmt.setString(2, tno);
pstmt.setString(3, subject);
pstmt.setCharacterStream(4, reader, (int) size);
System.out.println(temp);
pstmt.executeUpdate();
System.out.println("上传成功");
inStream.close();
}
catch (Exception e) {
System.out.println("发生异常" + e);
}
}
else {
throw new FileUploadException("fail to upLoad");
}
}
}
}catch(Exception e) {
System.out.println("发生异常" + e);
}
//Debug.log (this, "process", "Using default process");
}
/**
* getURL
*
* @return String
* @todo Implement this stumanage.events.EventHandleBase method
*/
protected String getURL() {
ResourceBundle rd = ResourceBundle.getBundle("URL");
String temp = rd.getString("UPSUC");
return temp;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -