文章出處
文章列表
package com.isoftstone.eply.servlet; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.UUID; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; 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.isoftstone.eply.util.ChangeFileToString; import com.isoftstone.eply.util.CheckElectronicPolicy; import com.isoftstone.eply.util.CreateCheckXml; import com.isoftstone.eply.vo.EPlyResponseFileVo; import com.isoftstone.eply.vo.EPlyResponseVo; import com.isoftstone.fwk.util.SpringUtils; public class ElectroicPolicyUploadFileServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //得到上傳文件的保存目錄,將上傳的文件存放于WEB-INF目錄下,不允許外界直接訪問,保證上傳文件的安全 String savePath = this.getServletContext().getContextPath()+"/upload"; File file = new File(savePath); //判斷上傳文件的保存目錄是否存在 if (!file.exists() && !file.isDirectory()) { System.out.println(savePath+"目錄不存在,需要創建"); //創建目錄 file.mkdir(); } String message = "";//消息提示 try{ //使用Apache文件上傳組件處理文件上傳步驟: //1、創建一個DiskFileItemFactory工廠 DiskFileItemFactory factory = new DiskFileItemFactory(); //2、創建一個文件上傳解析器 ServletFileUpload upload = new ServletFileUpload(factory); //解決上傳文件名的中文亂碼 upload.setHeaderEncoding("UTF-8"); //3、判斷提交上來的數據是否是上傳表單的數據 if(!ServletFileUpload.isMultipartContent(request)){ //按照傳統方式獲取數據 return ; } //4、使用ServletFileUpload解析器解析上傳數據,解析結果返回的是一個List<FileItem>集合,每一個FileItem對應一個Form表單的輸入項 List<FileItem> list = upload.parseRequest(request); for(FileItem item : list){ //如果fileitem中封裝的是普通輸入項的數據 if(item.isFormField()){ String name = item.getFieldName(); //解決普通輸入項的數據的中文亂碼問題 String value = item.getString("UTF-8"); //value = new String(value.getBytes("iso8859-1"),"UTF-8"); System.out.println("普通輸入項的名稱和數據"+name + "=" + value); CPlyNo=value; }else{//如果fileitem中封裝的是上傳文件 //得到上傳的文件名稱, String filename = item.getName();if(filename==null || filename.trim().equals("")){ continue; } //注意:不同的瀏覽器提交的文件名是不一樣的,有些瀏覽器提交上來的文件名是帶有路徑的,如: c:\a\b\1.txt,而有些只是單純的文件名,如:1.txt //處理獲取到的上傳文件的文件名的路徑部分,只保留文件名部分 filename = filename.substring(filename.lastIndexOf("\\")+1); //獲取item中的上傳文件filename的輸入流 InputStream in = item.getInputStream(); //創建一個文件輸出流 FileOutputStream out = new FileOutputStream(savePath + "/" + filename); //創建一個緩沖區 byte buffer[] = new byte[1024]; //判斷輸入流中的數據是否已經讀完的標識 int len = 0; //循環將輸入流讀入到緩沖區當中,(len=in.read(buffer))>0就表示in里面還有數據 while((len=in.read(buffer))>0){ //使用FileOutputStream輸出流將緩沖區的數據寫入到指定的目錄(savePath + "\\" + filename)當中 out.write(buffer, 0, len); } //關閉輸入流 in.close(); //關閉輸出流 out.close(); //刪除處理文件上傳時生成的臨時文件 item.delete(); UUID uuid = UUID.randomUUID(); // 得到對象產生的ID String resid = uuid.toString();
String xmldata= "<?xml version=\"1.0\" encoding=\"GBK\"?><PACKET><HEAD><KEY>E03</KEY><BUSINESS_SOURCE>0</BUSINESS_SOURCE><NUM>1100101000108000320150000092</NUM><TYPE>A</TYPE></HEAD></PACKET>";//拼報文 File xmlFile= new File(savePath +"/"+resid+".xml");//保存xml格式文件 if (!xmlFile.getParentFile().exists()) xmlFile.getParentFile().mkdirs(); BufferedReader bufferedReader = new BufferedReader(new StringReader(xmldata)); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(xmlFile)); char buf[] = new char[1024]; //字符緩沖區 int len2; while ((len2 = bufferedReader.read(buf)) != -1) { bufferedWriter.write(buf, 0, len2); } bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); DataSource source = new FileDataSource(xmlFile); DataHandler dataHandler =new DataHandler(source); EPlyResponseVo epresponse=new EPlyResponseVo(); List<EPlyResponseFileVo> listvo = new ArrayList<EPlyResponseFileVo>(); File file=new File(savePath +"/"+filename); DataSource source2 = new FileDataSource(file); DataHandler dataHandler2 =new DataHandler(source2); xmlFile.delete(); //刪除臨時文件 filepdf.delete(); //刪除臨時文件 }catch (Exception e) { if("".equals(message)){ message = "上傳文件失敗,請重新上傳!"; } e.printStackTrace(); } response.setContentType("text/html;charset=gb2312"); PrintWriter out=response.getWriter(); out.println("<script type='text/javascript'>alert('"+message+"')</script>"); out.print("<script language=javascript>window.close();"); out.print("</script>"); out.close(); } }
文章列表
全站熱搜