servlet远程文件上传

来源:互联网 发布:禁用独立显卡 linux 编辑:程序博客网 时间:2024/05/18 21:44

设置表单的提交方式为 "post",并且,还要设置 "enctype=multipart/form-data"。


import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Hashtable;
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.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.alibaba.fastjson.JSON;

public class ReceiveFileSeverlet extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {
        
        // 解析参数   
        String jsonStr = "";
        
//        String checkResult = checkKey("api_key_mobile", request.getParameter("key"));
//        if (!"".equals(checkResult)) {
//            
//            response.setCharacterEncoding("UTF-8");
//            response.getWriter().print(checkResult);
//            return;
//        }
        
        Hashtable<String, String> formDatas = new Hashtable<String, String>();
        List<File> uploadFiles = new ArrayList<File>();
        try {
            String str1 = AppConfig.getInstance().getApplicationRoot() + File.separator + "upload" + File.separator;
            DiskFileItemFactory localDiskFileItemFactory = new DiskFileItemFactory();
            localDiskFileItemFactory.setRepository(new File(str1 + "tmp"));
            localDiskFileItemFactory.setSizeThreshold(4194304);
            ServletFileUpload localServletFileUpload = new ServletFileUpload(localDiskFileItemFactory);
            localServletFileUpload.setHeaderEncoding("UTF-8");
            List<FileItem> localList = localServletFileUpload.parseRequest(request);
            for (int i = 0; i < localList.size(); i++) {
                FileItem localFileItem = localList.get(i);
                 if (!localFileItem.isFormField()) {
                    if ("".equals(localFileItem.getName())) {
                        continue;
                    }
//                    File localFile = new File(str1 + getNewFileName(localFileItem.getName()));
                    File localFile = new File(str1 + localFileItem.getName());
                    localFileItem.write(localFile);
                    String str2 = localFileItem.getName();
                    if ((str2.toLowerCase().endsWith(".jsp")) || (str2.toLowerCase().endsWith(".bat")) || (str2.toLowerCase().endsWith(".exe"))) {
                        localFile.delete();
                    } else {
                        uploadFiles.add(localFile);
                    }
                } else {
                    formDatas.put(localFileItem.getFieldName(), localFileItem.getString("UTF-8").trim());
                }
            }
        } catch (Exception e) {
            AppLogger.getInstance().errorLog("上传文件出错", e);
        }
        
//        Iterator localIterator = request.getParameterMap().keySet().iterator();
//        while (localIterator.hasNext())
//        {
//          String str1 = localIterator.next().toString();
//          String str2 = request.getParameter(str1);
//          if (str2 == null) {
//              continue;
//          }
//          formDatas.put(str1, str2.trim());
//        }
        
        Connection con = null;
        try {
            con = DBConnectionPool.getInstance().getConnection();
            con.setAutoCommit(false);
            
            // 处理文件
            jsonStr = uploadFile(con, uploadFiles);
            
            con.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (con != null)
                try {
                    con.rollback();
                    con.close();
                } catch (Exception localException3) {
                }
        }
        
        response.setCharacterEncoding("UTF-8");
        response.getWriter().print(jsonStr);
    }
    
    private String uploadFile(Connection con, List<File> uploadFiles) throws Exception {
        Hashtable<String, String> jsonHash = new Hashtable<String, String>();
        File file = uploadFiles.get(0);
        String imageDir = Constants.UPLOAD_REAL_PATH + File.separator + "serviceReport" + File.separator;
        if (file.exists()) {
            file.renameTo(new File(imageDir + File.separator + file.getName()));
            jsonHash.put("status", "1"); // 成功
        }
        
        return JSON.toJSONString(jsonHash);
    }

    /**
     * 重新命名图片
     * @param paramString
     * @return
     * @throws Exception
     */
//    private String getNewFileName(String paramString) throws Exception {
//        int i = paramString.lastIndexOf('.');
//        String str = StringUtil.getRandomString(10);
//        return str + DateTimeUtil.getCurrentDateTime().replaceAll("-", "").replaceAll(":", "").replaceAll(" ", "") + paramString.substring(i);
//    }
    
//    private String checkKey(String configKey, String key) {
//        Hashtable<String, String> jsonHash = new Hashtable<String, String>();
//        // 判断来源 是否合法
//        String tempKey = key;
//        if (!tempKey.equals(AppConfig.getInstance().getParameterConfig().getParameter(configKey))) {
//            jsonHash.put("result", "-1"); // 非法请求
//            jsonHash.put("data", "非法请求");
//            return JSON.toJSONString(jsonHash);
//        }
//        return "";
//    }
}


0 0
原创粉丝点击