📄 publishservlet.java
字号:
package servlet.former;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletException;
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 servlet.back.BaseServlet;
import util.RequestToMap;
import vo.forward.Card;
import vo.forward.Files;
import action.forward.DataBasePool;
import dao.forward.PublishCardDao;
public class PublishServlet extends BaseServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String username = (String)request.getSession().getAttribute("username");
String sortID = request.getParameter("sortID");
String cardID = request.getParameter("cardID");
String from = request.getParameter("from");
String filepath = null;
int file_size = 1024;
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(file_size * file_size * 4);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(file_size * 4);
// 文件上传的目标路径
String uploadFilePath = request.getRealPath("file");
fu.setRepositoryPath(uploadFilePath);
List fileItems = null;
try {
fileItems = fu.parseRequest(request);
Map<String, String> paramMap = new HashMap<String, String>();
paramMap = RequestToMap.getRequestParamByName(paramMap, fileItems);
Iterator it = fileItems.iterator();
// 正则匹配,过滤路径取文件名
String regExp = ".+\\\\(.+)$";
// 过滤只能上传的文件类型
String[] rightType = { ".BMP", ".GIF", ".JPEG", ".PDF", ".VISIO", ".XLS", ".TAR", ".ZIP", ".HTML", ".AVI" };
Pattern p = Pattern.compile(regExp);
String file_name = null;
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
// 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();
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 < rightType.length; temp++) {
if (m.group(1).toUpperCase().endsWith(rightType[temp])) {
String path = item.getName();
// 得到去除路径的文件名
file_name = path.substring(path.lastIndexOf(File.separator) + 1);
//写入目标文件夹
filepath = uploadFilePath + File.separator + file_name;
item.write(new File(filepath));
}
}
} else {
throw new IOException("fail to upload");
}
}
}
String theme = paramMap.get("newcard_theme");
String content = paramMap.get("eidtor");
String filePath = filepath;
String fileScore = paramMap.get("file_score");
Connection con = new DataBasePool().getConnection();
Card card = new Card();
card.setContent(new String(content.getBytes("GBK"),"utf-8"));
if(!"".equals(sortID)&&sortID!=null){
card.setSortID(Integer.parseInt(sortID));
}
card.setTheme(new String(theme.getBytes("GBK"),"utf-8"));
card.setUserID(new String(username.getBytes("GBK"),"utf-8"));
Files file = new Files();
file.setPath(filePath);
if(!"".equals(fileScore)&&fileScore!=null) {
file.setScore(new Integer(fileScore));
}
new PublishCardDao(con).publish(card,file);
if("model".equals(from)) {
this.getServletContext().getRequestDispatcher("/model.page?pageNo=1").forward(request,response);
}
if("card".equals(from)){
this.getServletContext().getRequestDispatcher("/card.page?pageNo=1").forward(request,response);
}
} catch (IOException e) {
e.printStackTrace();
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -