⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 publishservlet.java

📁 Servlet文件上传的源代码
💻 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 + -