public void upload() throws Exception { boolean isMultipart = ServletFileUpload.isMultipartContent(this.request); if (!isMultipart) { this.state = this.errorInfo.get("NOFILE"); return; } DiskFileItemFactory dff = new DiskFileItemFactory(); String savePath = this.getFolder(this.savePath); dff.setRepository(new File(savePath)); try { ServletFileUpload sfu = new ServletFileUpload(dff); sfu.setSizeMax(this.maxSize * 1024); sfu.setHeaderEncoding("utf-8"); FileItemIterator fii = sfu.getItemIterator(this.request); while (fii.hasNext()) { FileItemStream fis = fii.next(); if (!fis.isFormField()) { this.originalName = fis.getName() .substring(fis.getName().lastIndexOf(System.getProperty("file.separator")) + 1); if (!this.checkFileType(this.originalName)) { this.state = this.errorInfo.get("TYPE"); continue; } this.fileName = this.getName(this.originalName); this.type = this.getFileExt(this.fileName); this.url = savePath + "/" + this.fileName; BufferedInputStream in = new BufferedInputStream(fis.openStream()); FileOutputStream out = new FileOutputStream(new File(this.getPhysicalPath(this.url))); BufferedOutputStream output = new BufferedOutputStream(out); Streams.copy(in, output, true); this.state = this.errorInfo.get("SUCCESS"); // UE中只会处理单张上传,完成后即退出 break; } else { String fname = fis.getFieldName(); // 只处理title,其余表单请自行处理 if (!fname.equals("pictitle")) { continue; } BufferedInputStream in = new BufferedInputStream(fis.openStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuffer result = new StringBuffer(); while (reader.ready()) { result.append((char) reader.read()); } this.title = new String(result.toString().getBytes(), "utf-8"); reader.close(); } } } catch (SizeLimitExceededException e) { this.state = this.errorInfo.get("SIZE"); } catch (InvalidContentTypeException e) { this.state = this.errorInfo.get("ENTYPE"); } catch (FileUploadException e) { this.state = this.errorInfo.get("REQUEST"); } catch (Exception e) { this.state = this.errorInfo.get("UNKNOWN"); } }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload fileUpload = new ServletFileUpload(factory); // 设置上传文件大小的上限,-1表示无上限 fileUpload.setSizeMax(-1); // 上传文件,解析表单中包含的文件字段和普通字段 try { List<FileItem> items = fileUpload.parseRequest(request); if (items.size() > 0) { FileItem item = (FileItem) items.get(0); String name = item.getName(); String path = getServletContext().getRealPath(Constants.UPLOAD_IMG_PATH) + "/" + name; logger.info("上传用户图片信息,图片名:" + name + ";上传路径:" + path); // 实现图片上传 try { item.write(new File(path)); // 就用户头像路径保存. User user = new User(); user.setPhone(request.getHeader("owner")); user.setImgPath(Constants.UPLOAD_IMG_PATH + "/" + name); userService.saveOrUpdateUserInfo(user); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
private void parseParams() { DiskFileItemFactory dff = new DiskFileItemFactory(); try { ServletFileUpload sfu = new ServletFileUpload(dff); sfu.setSizeMax(this.maxSize); sfu.setHeaderEncoding(Uploader.ENCODEING); FileItemIterator fii = sfu.getItemIterator(this.request); while (fii.hasNext()) { FileItemStream item = fii.next(); // 普通参数存储 if (item.isFormField()) { this.params.put(item.getFieldName(), this.getParameterValue(item.openStream())); } else { // 只保留一个 if (this.inputStream == null) { this.inputStream = item.openStream(); this.originalName = item.getName(); return; } } } } catch (Exception e) { this.state = this.errorInfo.get("UNKNOWN"); } }
private List<FileItem> parseRequest(HttpServletRequest servletRequest, String saveDir) throws FileUploadException { DiskFileItemFactory fac = createDiskFileItemFactory(saveDir); ServletFileUpload upload = new ServletFileUpload(fac); upload.setSizeMax(maxSize); return upload.parseRequest(createRequestContext(servletRequest)); }
@Override protected void service() throws ServletException, IOException { HttpServletRequest request = getRequest(); String path = null; DiskFileItemFactory factory = new DiskFileItemFactory(5 * 1024, new File(Configuration.getContextPath("temp"))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(3 * 1024 * 1024); try { List<FileItem> items = upload.parseRequest(request); FileItem fileItem = null; if (items != null && items.size() > 0 && StringUtils.isNotBlank((fileItem = items.get(0)).getName())) { String fileName = fileItem.getName(); if (!fileName.endsWith(".jpg") && !fileName.endsWith(".gif") && !fileName.endsWith(".png")) { writeText("format_error"); return; } path = ImageUtil.generatePath(fileItem.getName()); IOUtil.copy(fileItem.getInputStream(), Configuration.getContextPath(path)); fileItem.delete(); writeText(Configuration.getSiteUrl(path)); } } catch (FileUploadException e) { throw new RuntimeException(e); } }
public void upload( @Observes ControllerFound event, MutableRequest request, MultipartConfig config, Validator validator) { if (!ServletFileUpload.isMultipartContent(request)) { return; } logger.info("Request contains multipart data. Try to parse with commons-upload."); final Multiset<String> indexes = HashMultiset.create(); final Multimap<String, String> params = LinkedListMultimap.create(); ServletFileUpload uploader = createServletFileUpload(config); UploadSizeLimit uploadSizeLimit = event.getMethod().getMethod().getAnnotation(UploadSizeLimit.class); uploader.setSizeMax( uploadSizeLimit != null ? uploadSizeLimit.sizeLimit() : config.getSizeLimit()); uploader.setFileSizeMax( uploadSizeLimit != null ? uploadSizeLimit.fileSizeLimit() : config.getFileSizeLimit()); logger.debug( "Setting file sizes: total={}, file={}", uploader.getSizeMax(), uploader.getFileSizeMax()); try { final List<FileItem> items = uploader.parseRequest(request); logger.debug( "Found {} attributes in the multipart form submission. Parsing them.", items.size()); for (FileItem item : items) { String name = item.getFieldName(); name = fixIndexedParameters(name, indexes); if (item.isFormField()) { logger.debug("{} is a field", name); params.put(name, getValue(item, request)); } else if (isNotEmpty(item)) { logger.debug("{} is a file", name); processFile(item, name, request); } else { logger.debug("A file field is empty: {}", item.getFieldName()); } } for (String paramName : params.keySet()) { Collection<String> paramValues = params.get(paramName); request.setParameter(paramName, paramValues.toArray(new String[paramValues.size()])); } } catch (final SizeLimitExceededException e) { reportSizeLimitExceeded(e, validator); } catch (FileUploadException e) { reportFileUploadException(e, validator); } }
private static ServletFileUpload createFileUpload() { ServletFileUpload upload = new ServletFileUpload( new DiskFileItemFactory(IN_MEMORY_FILE_SIZE_THRESHOLD, new File(TMP_DIR))); upload.setSizeMax(MAX_UPLOAD_FILE_SIZE); return upload; }
@SuppressWarnings("null") public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Check that we have a file upload request isMultipart = ServletFileUpload.isMultipartContent(request); response.setContentType("text/html"); // if (!isMultipart) { return; } DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(maxMemSize); // Location to save data that is larger than maxMemSize. // factory.setRepository(new File("d:\\temp")); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // maximum file size to be uploaded. upload.setSizeMax(maxFileSize); // System.out.println(empid); try { // out = response.getWriter( ); // Parse the request to get file items. List fileItems = upload.parseRequest(request); // Process the uploaded file items Iterator i = fileItems.iterator(); while (i.hasNext()) { FileItem fi = (FileItem) i.next(); if (!fi.isFormField()) { // Get the uploaded file parameters String fieldName = fi.getFieldName(); String fileName = fi.getName(); String contentType = fi.getContentType(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize(); // Write the file if (fileName.lastIndexOf("\\") >= 0) { file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\"))); } else { file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1)); } fi.write(file); readBOM(file); break; } } RequestDispatcher ReqDis = request.getRequestDispatcher("afterBOM.jsp"); ReqDis.forward(request, response); } catch (Exception ex) { ex.printStackTrace(); RequestDispatcher ReqDis = request.getRequestDispatcher("Error.jsp"); ReqDis.forward(request, response); } }
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("开始!" + fileName); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(maxPostSize); try { String rootPath = request.getRealPath("/"); String filePath = rootPath + uploadPath; // 若该路径目录不存在,则创建 File f = new File(filePath); if (!f.exists()) { f.mkdirs(); } File f2 = new File(filePath + File.separator + fileName + ".jpg"); if (f2.exists()) { out.print("文件已存在"); } else { InputStream inputStream = request.getInputStream(); FileOutputStream outputStream = new FileOutputStream(f2); try { int formlength = request.getContentLength(); byte[] formcontent = new byte[formlength]; int totalread = 0; int nowread = 0; while (totalread < formlength) { nowread = inputStream.read(formcontent, totalread, formlength); totalread += nowread; } outputStream.write(formcontent); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); out.print("错误:" + e.getMessage()); } finally { outputStream.close(); inputStream.close(); } } } catch (IOException e) { e.printStackTrace(); out.print("错误:" + e.getMessage()); } finally { out.close(); } System.out.println("结束"); }
/** * Utility method for parsing a multipart servlet request. This method returns an iterator of * FileItem objects that corresponds to the request. * * @param request The servlet request containing the multipart request. * @return Returns an iterator of FileItem objects the corresponds to the request. * @throws Exception Thrown if any problems occur while processing the request. */ protected static Iterator processMultipartRequest(HttpServletRequest request) throws Exception { // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(Environment.getValue(Environment.PROP_FILE_DIR_FULL_PATH))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); upload.setSizeMax(Environment.getLongValue(Environment.PROP_FILE_MAX_FILE_SIZE)); return upload.parseRequest(request).iterator(); }
/** 上传ruleset */ public void upRuleset() throws Exception { /** * form中的enctype必须是multipart/... 组件提供方法检测form表单的enctype属性 在isMultipartContent方法中同时检测了是否是post提交 * 如果不是post提交则返回false */ if (ServletFileUpload.isMultipartContent(request)) { String RulePath = (String) application.getAttribute("Ruleset"); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(RulePath + "tmp")); // 临时文件目录 // 内存最大占用 factory.setSizeThreshold(1024000); ServletFileUpload sfu = new ServletFileUpload(factory); // 单个文件最大值byte sfu.setFileSizeMax(102400000); // 所有上传文件的总和最大值byte sfu.setSizeMax(204800000); List<FileItem> items = null; try { items = sfu.parseRequest(request); } catch (SizeLimitExceededException e) { error("size limit exception!"); return; } catch (Exception e) { error("Exception:" + e.getMessage()); return; } Json j = new Json(1, "ok"); JsonObjectNode data = j.createData(); JsonArrayNode files = new JsonArrayNode("filename"); data.addChild(files); Iterator<FileItem> iter = (items == null) ? null : items.iterator(); while (iter != null && iter.hasNext()) { FileItem item = (FileItem) iter.next(); // 文件域 if (!item.isFormField()) { String fileName = item.getName(); int index = fileName.lastIndexOf("\\"); if (index < 0) index = 0; fileName = fileName.substring(index); if (!fileName.endsWith(".xml")) fileName += ".xml"; BufferedInputStream in = new BufferedInputStream(item.getInputStream()); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(RulePath + fileName))); Streams.copy(in, out, true); files.addItem(new JsonLeafNode("", fileName)); } } echo(j.toString()); } else { error("enctype error!"); } }
/** * The doPost method of the servlet. <br> * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); // InputStream is = request.getInputStream(); // InputStreamReader isr = new InputStreamReader(is); // char[] c = new char[100]; // while(isr.read(c)!=-1){ // System.out.println(c); // } String path = request.getRealPath("/"); String savePath = path + "file\\"; String tempPath = path + "temp\\"; File f = new File(tempPath); // byte[] b = new byte[1]; // int len = 0; // while((len=is.read(b))!=-1){ // fos.write(b,0,len); // } // fos.flush(); // fos.close(); // is.close(); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(f); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(1024 * 1024 * 1024); List<FileItem> items = new ArrayList<FileItem>(); try { items = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } for (FileItem fileItem : items) { System.out.println(fileItem.getName()); System.out.println(fileItem.getFieldName()); System.out.println(fileItem.getSize()); InputStream is = fileItem.getInputStream(); FileOutputStream fos = new FileOutputStream(savePath + fileItem.getName()); byte[] b = new byte[1024]; int len = 0; while ((len = is.read(b)) != -1) { fos.write(b, 0, len); } fos.flush(); fos.close(); is.close(); } }
static { // configures upload settings DiskFileItemFactory factory = new DiskFileItemFactory(); // sets memory threshold - beyond which files are stored in disk factory.setSizeThreshold(MEMORY_THRESHOLD); // sets temporary location to store files factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); upload = new ServletFileUpload(factory); // sets maximum size of upload file upload.setFileSizeMax(MAX_FILE_SIZE); // sets maximum size of request (include file + form data) upload.setSizeMax(MAX_REQUEST_SIZE); }
/** <b>这个不能用,他用的是apache的FileUpload</b> 功能描述:使用fileupload components 上传多个文件 */ public List<Map> UploadFilesByFileupload(HttpServletRequest request) { boolean isMultipart = ServletFileUpload.isMultipartContent(request); List<Map> resultList = new ArrayList<Map>(); if (!isMultipart) { return resultList; } String userfilepath = request.getRealPath("upload"); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(2 * 1024 * 1024); // 2MB factory.setRepository(new File(userfilepath)); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(50 * 1024 * 1024); // 50MB try { List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { if (item.isFormField()) { // 普通表单 } else { String fieldName = item.getFieldName(); String fileName = item.getName(); // 如果文件域没有填写内容,或者填写的文件不存在 if ("".equals(fileName) || item.getSize() == 0) { continue; } String date = "/" + fnu.getDate8() + "/"; String extName = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); String newfilename = fnu.getUUID() + "." + extName; File uploadedFile = new File(userfilepath + date + newfilename); if (!uploadedFile.exists()) { // 如果要写入的文件或目录不存在,那么试着创建要写入的目录,以便写入文件 uploadedFile.getParentFile().mkdirs(); } item.write(uploadedFile); Map tmpfile = new HashMap<String, String>(); tmpfile.put("fieldname", fieldName); tmpfile.put( "filename", fileName.substring(fileName.lastIndexOf(File.separator) + 1, fileName.length())); tmpfile.put("extname", extName); tmpfile.put("filepath", "/upload" + date + newfilename); resultList.add(tmpfile); } } } catch (Exception e) { e.printStackTrace(); } return resultList; }
public int populateImagesFromDatabase( HttpServletRequest request, HttpServletResponse response, List<DemoProductInfo> products) throws ServletException, IOException { final String IMAGE_DIRECTORY = "img"; final int THRESHOLD_SIZE = 1024 * 1024 * 3; // 3MB final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB // set variables to provide path names and scope visibility through method String fileName = null; int numFilesWritten = 0; // configures file writing settings DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(THRESHOLD_SIZE); // use factory to provide thread-safe retrieval mechanism to // write to eventual application directory factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(MAX_FILE_SIZE); upload.setSizeMax(MAX_REQUEST_SIZE); // constructs the directory path to store upload file String uploadPath = getServletContext().getRealPath("") + File.separator + IMAGE_DIRECTORY; // in this case use a predetermined path set at start of method // String uploadPath = uploadToDirPath; // creates the directory if it does not exist File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } for (DemoProductInfo product : products) { String filePath = uploadPath + File.separator + product.getFilename(); DemoProductInfoDB.getBytesToFile(product.getProductImage(), filePath); numFilesWritten++; } return numFilesWritten; }
/** * Pseudo-constructor that allows the class to perform any initialization necessary. * * @param request an HttpServletRequest that has a content-type of multipart. * @param tempDir a File representing the temporary directory that can be used to store file parts * as they are uploaded if this is desirable * @param maxPostSize the size in bytes beyond which the request should not be read, and a * FileUploadLimitExceeded exception should be thrown * @throws IOException if a problem occurs processing the request of storing temporary files * @throws FileUploadLimitExceededException if the POST content is longer than the maxPostSize * supplied. */ @SuppressWarnings("unchecked") public void build(HttpServletRequest request, File tempDir, long maxPostSize) throws IOException, FileUploadLimitExceededException { try { this.charset = request.getCharacterEncoding(); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(tempDir); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(maxPostSize); List<FileItem> items = upload.parseRequest(request); Map<String, List<String>> params = new HashMap<String, List<String>>(); for (FileItem item : items) { // If it's a form field, add the string value to the list if (item.isFormField()) { List<String> values = params.get(item.getFieldName()); if (values == null) { values = new ArrayList<String>(); params.put(item.getFieldName(), values); } values.add(charset == null ? item.getString() : item.getString(charset)); } // Else store the file param else { files.put(item.getFieldName(), item); } } // Now convert them down into the usual map of String->String[] for (Map.Entry<String, List<String>> entry : params.entrySet()) { List<String> values = entry.getValue(); this.parameters.put(entry.getKey(), values.toArray(new String[values.size()])); } } catch (FileUploadBase.SizeLimitExceededException slee) { throw new FileUploadLimitExceededException(maxPostSize, slee.getActualSize()); } catch (FileUploadException fue) { IOException ioe = new IOException("Could not parse and cache file upload data."); ioe.initCause(fue); throw ioe; } }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String saveFilename = null; String realSavePath = null; String filename = null; Users users = (Users) request.getSession().getAttribute("loginuser"); int sid = users.getIdusers(); // 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全 String savePath = this.getServletContext().getRealPath("/WEB-INF/upload"); // 上传时生成的临时文件保存目录 String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp"); File tmpFile = new File(tempPath); if (!tmpFile.exists()) { // 创建临时目录 tmpFile.mkdir(); } // 消息提示 String message = ""; try { // 使用Apache文件上传组件处理文件上传步骤: // 1、创建一个DiskFileItemFactory工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。 factory.setSizeThreshold(1024 * 100); // 设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB // 设置上传时生成的临时文件的保存目录 factory.setRepository(tmpFile); // 2、创建一个文件上传解析器 ServletFileUpload upload = new ServletFileUpload(factory); // 监听文件上传进度 upload.setProgressListener( new ProgressListener() { public void update(long pBytesRead, long pContentLength, int arg2) { System.out.println("文件大小为:" + pContentLength + ",当前已处理:" + pBytesRead); /** * 文件大小为:14608,当前已处理:4096 文件大小为:14608,当前已处理:7367 文件大小为:14608,当前已处理:11419 * 文件大小为:14608,当前已处理:14608 */ } }); // 解决上传文件名的中文乱码 upload.setHeaderEncoding("gb2312"); // 3、判断提交上来的数据是否是上传表单的数据 if (!ServletFileUpload.isMultipartContent(request)) { // 按照传统方式获取数据 return; } // 设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB upload.setFileSizeMax(1024 * 1024); // 设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB upload.setSizeMax(1024 * 1024 * 10); // 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("gb2312"); // value = new String(value.getBytes("iso8859-1"),"UTF-8"); System.out.println(name + "=" + value); } else { // 如果fileitem中封装的是上传文件 // 得到上传的文件名称, filename = item.getName(); System.out.println(filename); if (filename == null || filename.trim().equals("")) { continue; } // 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt // 处理获取到的上传文件的文件名的路径部分,只保留文件名部分 filename = filename.substring(filename.lastIndexOf("\\") + 1); // 得到上传文件的扩展名 String fileExtName = filename.substring(filename.lastIndexOf(".") + 1); // 如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法 System.out.println("上传的文件的扩展名是:" + fileExtName); // 获取item中的上传文件的输入流 InputStream in = item.getInputStream(); // 得到文件保存的名称 saveFilename = makeFileName(filename); // 得到文件的保存目录 realSavePath = makePath(saveFilename, savePath); // 创建一个文件输出流 FileOutputStream out = new FileOutputStream(realSavePath + "\\" + saveFilename); // 创建一个缓冲区 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(); message = "文件上传成功!"; Files files = new Files(); files.setFilename(filename); files.setFileonlyname(saveFilename); files.setFilesroute(realSavePath); FileDao fileDao = new FileDao(); fileDao.addOne(files, sid); } } } catch (FileUploadBase.FileSizeLimitExceededException e) { e.printStackTrace(); request.setAttribute("message", "单个文件超出最大值!!!"); request.getRequestDispatcher("user_view/file/file_message.jsp").forward(request, response); return; } catch (FileUploadBase.SizeLimitExceededException e) { e.printStackTrace(); request.setAttribute("message", "上传文件的总的大小超出限制的最大值!!!"); request.getRequestDispatcher("user_view/file/file_message.jsp").forward(request, response); return; } catch (Exception e) { message = "文件上传失败!"; e.printStackTrace(); } request.setAttribute("message", message); request.getRequestDispatcher("/user_view/file/file_message.jsp").forward(request, response); }
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { boolean isMultipart = FileUpload.isMultipartContent(req); Hashtable dv = new Hashtable(); String user = null; String password = null; String sql = null; String dfo = null; String enc = null; if (isMultipart) { ServletFileUpload upload = new ServletFileUpload(); upload.setSizeMax(mU); try { FileItemIterator iter = upload.getItemIterator(req); // List<FileItem> items = upload.parseRequest(req); while (iter.hasNext()) { FileItemStream item = iter.next(); // for (int ct = 0;ct < items.size();ct++){ // FileItem item = (FileItem)items.get(ct); String name = item.getName(); // (name + " jiql UREEAD 1aay " + item.isFormField() + ":" + name.equals("directValues")); InputStream stream = item.openStream(); // InputStream stream = item.getInputStream(); //// (name + " jiql UREEAD 1 " + stream.available()); // byte[] b = StreamUtil.readBytes(stream); if (name.equals("directValues")) { // (stream.available() + " jiql UREEAD " ); // ByteArrayInputStream bout = new ByteArrayInputStream(b); ObjectInputStream dout = new ObjectInputStream(stream); // ObjectInputStream dout = new ObjectInputStream(bout); dv = (Hashtable) dout.readObject(); } } } catch (Exception e) { tools.util.LogMgr.err("JS.readDV " + e.toString()); e.printStackTrace(); } // ("$$$ DV " + dv); Hashtable pars = (Hashtable) dv.get("parameters"); if (pars != null) { Enumeration en = pars.keys(); while (en.hasMoreElements()) { String n = en.nextElement().toString(); // ("PARSMS " + n); if (n.equals("query")) sql = pars.get(n).toString(); else if (n.equals("password")) password = pars.get(n).toString(); else if (n.equals("user")) user = pars.get(n).toString(); else if (n.equals("date.format")) dfo = pars.get(n).toString(); else if (n.equals("encoding")) enc = pars.get(n).toString(); } } } if (user == null) user = req.getParameter("user"); if (password == null) password = req.getParameter("password"); if (!StringUtil.isRealString(user) || !StringUtil.isRealString(password)) { resp.sendError(403, "Invalid User or Password"); return; } if (!StringUtil.isRealString(theUser) || !StringUtil.isRealString(thePassword)) { resp.sendError(403, "Invalid User OR Password"); return; } Connection Conn = null; Hashtable h = new Hashtable(); h.put("remote", "true"); try { // NameValuePairs p = new NameValuePairs(ps); if (!user.equals(theUser) || !password.equals(thePassword)) { resp.sendError(403, "Invalid User OR Invalid Password"); return; } // throw new ServletException("Invalid User OR Password"); if (sql == null) sql = req.getParameter("query"); // ( "THE SQL " + sql); NameValuePairs nvp = new NameValuePairs(); if (dfo == null) dfo = req.getParameter("date.format"); if (dfo != null) nvp.put("date.format", dfo); if (enc == null) enc = req.getParameter("encoding"); if (enc != null) nvp.put("encoding", enc); Conn = get(nvp); org.jiql.jdbc.Statement Stmt = (org.jiql.jdbc.Statement) Conn.createStatement(); Stmt.setDirectValues(dv); Stmt.execute(sql); org.jiql.jdbc.ResultSet res = (org.jiql.jdbc.ResultSet) Stmt.getResultSet(); if (res != null) { if (res.getResults() != null) h.put("results", res.getResults()); if (res.getSQLParser() != null) h.put("sqlparser", res.getSQLParser()); } else h.put("sqlparser", Stmt.getSQLParser()); // h.put("remote","true"); resp.setContentType("binary/object"); // if (enc != null) // resp.setCharacterEncoding(enc); OutputStream fos = resp.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(h); // resp.getWriter(). ("result" + h); } catch (Exception ex) { org.jiql.util.JGUtil.olog(ex); ex.printStackTrace(); tools.util.LogMgr.err("JIQLServlet " + ex.toString()); JGException je = null; if (ex instanceof JGException) je = (JGException) ex; else je = new JGException(ex.toString()); h.put("error", je); resp.setContentType("binary/object"); OutputStream fos = resp.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(h); // throw new ServletException(ex.toString()); } finally { if (Conn != null) try { Conn.close(); } catch (Exception ex) { ex.printStackTrace(); } } }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { // Check that we have a file upload request filePath = getServletContext().getRealPath(request.getServletPath()); int path = filePath.lastIndexOf('\\'); String path1 = filePath.substring(0, path) + "\\doc\\"; System.out.println(path1); filePath = path1; HttpSession session1 = request.getSession(); session1.setAttribute("url", path1); isMultipart = ServletFileUpload.isMultipartContent(request); response.setContentType("text/html"); java.io.PrintWriter out = response.getWriter(); if (!isMultipart) { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet upload</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>No file uploaded</p>"); out.println("</body>"); out.println("</html>"); return; } DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(maxMemSize); // Location to save data that is larger than maxMemSize. String path2 = filePath.substring(0, path) + "\\temp\\"; factory.setRepository(new File(path2)); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // maximum file size to be uploaded. upload.setSizeMax(maxFileSize); try { // Parse the request to get file items. List fileItems = upload.parseRequest(request); // Process the uploaded file items Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet upload</title>"); out.println("</head>"); out.println("<body>"); while (i.hasNext()) { FileItem fi = (FileItem) i.next(); if (!fi.isFormField()) { // Get the uploaded file parameters String fileName = fi.getName(); /* String fieldName = fi.getFieldName(); String contentType = fi.getContentType(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize();*/ // Write the file if (fileName.lastIndexOf("\\") >= 0) { file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\"))); } else { file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1)); } String src = path1.concat(encryptFileName(fileName)); File f3 = new File(src); fi.write(f3); List myFileList = null; HttpSession session = request.getSession(); myFileList = (List) session.getAttribute("fileList"); if (myFileList != null) { myFileList.add(f3.getName()); } else { myFileList = new ArrayList<String>(); myFileList.add(f3.getName()); } session.setAttribute("fileList", myFileList); } } out.println("</body>"); out.println("</html>"); /*Below code is to fetch the list of upload file name's */ /*Begin*/ HttpSession session = request.getSession(); List myFileList = (List) session.getAttribute("fileList"); Iterator itr = myFileList.iterator(); System.out.println("Fetching file Names from session :"); int j = 0; while (itr.hasNext()) { System.out.println(" File Name " + (++j) + " :" + itr.next()); } /*Ends*/ response.sendRedirect(request.getContextPath() + "/Admin/fileupload1.jsp"); } catch (Exception ex) { System.out.println(ex); } }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String imageString = ""; String imageDivId = ""; String focusURLDivId = ""; String normalURLDivId = ""; String imageWidthDivId = ""; String imageHeightDivId = ""; String imageLocX = ""; String imageLocY = ""; String newImageUpdateJSON = ""; String imageWidgetSavePath = (String) request.getSession().getAttribute("imageWidgetSavePath"); String fileName = ""; request.getParameter("inputImageFile"); String contentType = request.getContentType(); if ((contentType.indexOf("multipart/form-data") >= 0)) { DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(maximumfilesize); File outputDir = new File(imageWidgetSavePath); if (!outputDir.exists()) { outputDir.mkdirs(); } dfif.setRepository(new File("C:/data/")); ServletFileUpload upload = new ServletFileUpload(dfif); upload.setSizeMax(maximumfilesize); List<FileItem> fileItem = null; try { fileItem = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } Iterator<FileItem> i = fileItem.iterator(); try { File file; while (i.hasNext()) { FileItem fi = (FileItem) i.next(); if (fi.isFormField()) { if (fi.getFieldName().equals("imageDivId")) { imageDivId = fi.getString(); } if (fi.getFieldName().equals("focusURLDivId")) { focusURLDivId = fi.getString(); } if (fi.getFieldName().equals("normalURLDivId")) { normalURLDivId = fi.getString(); } if (fi.getFieldName().equals("imageWidthDivId")) { imageWidthDivId = fi.getString(); } if (fi.getFieldName().equals("imageHeightDivId")) { imageHeightDivId = fi.getString(); } if (fi.getFieldName().equals("newImageUpdateJSON")) { newImageUpdateJSON = fi.getString(); } if (fi.getFieldName().equals("imageLocX")) { imageLocX = fi.getString(); } if (fi.getFieldName().equals("imageLocY")) { imageLocY = fi.getString(); } } if (!fi.isFormField()) { fileName = fi.getName(); if (fileName.lastIndexOf("\\") >= 0) { file = new File(imageWidgetSavePath + fileName.substring(fileName.lastIndexOf("\\"))); } else { file = new File( imageWidgetSavePath + fileName.substring(fileName.lastIndexOf("\\") + 1)); } fi.write(file); fileName = imageWidgetSavePath + fileName; File f = new File(fileName); BufferedImage bi = ImageIO.read(f); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi, "png", baos); BASE64Encoder encoder = new BASE64Encoder(); imageString = encoder.encode(baos.toByteArray()); imageString = imageString.replaceAll("[\\t\\n\\r]+", " "); baos.close(); } } } catch (Exception ex) { System.out.println(ex); } } request.setAttribute("imageDivId", imageDivId); request.setAttribute("focusURLDivId", focusURLDivId); request.setAttribute("normalURLDivId", normalURLDivId); request.setAttribute("imageWidthDivId", imageWidthDivId); request.setAttribute("imageHeightDivId", imageHeightDivId); request.setAttribute("imageLocX", imageLocX); request.setAttribute("imageLocY", imageLocY); request.setAttribute("imageString", imageString); request.setAttribute("newImageUpdateJSON", newImageUpdateJSON); request.getRequestDispatcher("/index.jsp").forward(request, response); }
/** * Creates a new request wrapper to handle multi-part data using methods adapted from Jason Pell's * multipart classes (see class description). * * @param saveDir the directory to save off the file * @param servletRequest the request containing the multipart * @throws java.io.IOException is thrown if encoding fails. */ @SuppressWarnings("unchecked") @Override public void parse(HttpServletRequest servletRequest, String saveDir) throws IOException { DiskFileItemFactory fac = new DiskFileItemFactory(); // Make sure that the data is written to file fac.setSizeThreshold(0); if (saveDir != null) { fac.setRepository(new File(saveDir)); } ProgressMonitor monitor = null; // Parse the request try { ServletFileUpload upload = new ServletFileUpload(fac); upload.setSizeMax(maxSize); monitor = new ProgressMonitor(); upload.setProgressListener(monitor); servletRequest.getSession().setAttribute(ProgressMonitor.SESSION_PROGRESS_MONITOR, monitor); List<FileItem> items = upload.parseRequest(createRequestContext(servletRequest)); for (FileItem item1 : items) { FileItem item = item1; if (log.isDebugEnabled()) { log.debug("Found item " + item.getFieldName()); } if (item.isFormField()) { if (log.isDebugEnabled()) { log.debug("Item is a normal form field"); } List<String> values; if (params.get(item.getFieldName()) != null) { values = params.get(item.getFieldName()); } else { values = new ArrayList<String>(); } // note: see http://jira.opensymphony.com/browse/WW-633 // basically, in some cases the charset may be null, so // we're just going to try to "other" method (no idea if this // will work) String charset = servletRequest.getCharacterEncoding(); if (charset != null) { values.add(item.getString(charset)); } else { values.add(item.getString()); } params.put(item.getFieldName(), values); } else { if (log.isDebugEnabled()) { log.debug("Item is a file upload"); } List<FileItem> values; if (files.get(item.getFieldName()) != null) { values = files.get(item.getFieldName()); } else { values = new ArrayList<FileItem>(); } values.add(item); files.put(item.getFieldName(), values); } } } catch (FileUploadException e) { e.printStackTrace(); if (monitor != null) monitor.abort(); log.error(e); errors.add(e.getMessage()); } catch (Exception e) { e.printStackTrace(); if (monitor != null) monitor.abort(); } }
protected void registerSchema( HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException, ServletException, FileUploadException, Exception { // Check that we have a file upload request String web_service_name = null; String new_web_service_name = null; String operation_name = null; String schemaFilename = null; String relative_schemaFilename = null; String schemaName = null; String inputoutput = null; int software_id = 0; String namespace = null; int schema_id = 0; boolean isMultipart = ServletFileUpload.isMultipartContent(request); // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Set factory constraints factory.setSizeThreshold(30000); factory.setRepository(new File("")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(30000); // Parse the request List items = upload.parseRequest(request); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { if (item.getFieldName().equals("software_id")) { software_id = Integer.parseInt(item.getString()); } else if (item.getFieldName().equals("schema_name")) { schemaName = item.getString(); } else if (item.getFieldName().equals("web_service_name")) { web_service_name = item.getString(); } else if (item.getFieldName().equals("new_web_service_name")) { new_web_service_name = item.getString(); } else if (item.getFieldName().equals("operation_name")) { operation_name = item.getString(); } else if (item.getFieldName().equals("inputoutput")) { inputoutput = item.getString(); } } else { relative_schemaFilename = new String( "/xsd/" + software_id + "_" + schemaName + "_" + ((int) (100000 * Math.random())) + ".xsd"); schemaFilename = this.xml_rep_path + relative_schemaFilename; System.out.println("schemaFilename: " + schemaFilename); File uploadedFile = new File(schemaFilename); item.write(uploadedFile); } } VendorDBConnector vendorDBConnector = new VendorDBConnector(); schema_id = vendorDBConnector.insertSchemaInfo( software_id, schemaName, relative_schemaFilename, xml_rep_path, new_web_service_name, web_service_name, operation_name, inputoutput); String message = ""; if (schema_id == -1) message = "The schema has NOT been registered successfully."; else message = "The schema has been registered successfully. You can find the registered xsd at " + this.xml_rep_path + "/xsd for the user.name: " + System.getProperty("user.name"); this.forwardToPage( "/vendor/succImportSchema.jsp?message=" + message + "&schema_id=" + schema_id, request, response); }
/** * Handles the HTTP <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id_book = "", len = ""; // Imposto il content type della risposta e prendo l'output response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // La dimensione massima di ogni singolo file su system int dimensioneMassimaDelFileScrivibieSulFileSystemInByte = 10 * 1024 * 1024; // 10 MB // Dimensione massima della request int dimensioneMassimaDellaRequestInByte = 20 * 1024 * 1024; // 20 MB // Cartella temporanea File cartellaTemporanea = new File("C:\\tempo"); try { // Creo un factory per l'accesso al filesystem DiskFileItemFactory factory = new DiskFileItemFactory(); // Setto la dimensione massima di ogni file, opzionale factory.setSizeThreshold(dimensioneMassimaDelFileScrivibieSulFileSystemInByte); // Setto la cartella temporanea, Opzionale factory.setRepository(cartellaTemporanea); // Istanzio la classe per l'upload ServletFileUpload upload = new ServletFileUpload(factory); // Setto la dimensione massima della request, opzionale upload.setSizeMax(dimensioneMassimaDellaRequestInByte); // Parso la riquest della servlet, mi viene ritornata una lista di FileItem con // tutti i field sia di tipo file che gli altri List<FileItem> items = upload.parseRequest(request); /* * * Giro per tutti i campi inviati */ for (int i = 0; i < items.size(); i++) { FileItem item = items.get(i); // Controllo se si tratta di un campo di input normale if (item.isFormField()) { // Prendo solo il nome e il valore String name = item.getFieldName(); String value = item.getString(); if (name.equals("id_book")) { id_book = value; } if (name.equals("len")) { len = value; } } // Se si stratta invece di un file ho varie possibilità else { // Dopo aver ripreso tutti i dati disponibili String fieldName = item.getFieldName(); String fileName = item.getName(); String contentType = item.getContentType(); boolean isInMemory = item.isInMemory(); long sizeInBytes = item.getSize(); // scrivo direttamente su filesystem File uploadedFile = new File("/Users/Babol/Desktop/dVruhero/aMuseWebsite/web/userPhoto/" + fileName); // Solo se veramente ho inviato qualcosa if (item.getSize() > 0) { item.write(uploadedFile); DBconnection.EditCoverBook(fileName, Integer.parseInt(id_book)); } } } // out.println("</body>"); // out.println("</html>"); } catch (Exception ex) { System.out.println("Errore: " + ex.getMessage()); } finally { if (len.equals("ita")) response.sendRedirect("modify_book.jsp?id_book=" + id_book); else response.sendRedirect("modify_book_eng.jsp?id_book=" + id_book); } }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { // Check that we have a file upload request isMultipart = ServletFileUpload.isMultipartContent(request); response.setContentType("text/html"); java.io.PrintWriter out = response.getWriter(); if (!isMultipart) { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet upload</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>No file uploaded</p>"); out.println("</body>"); out.println("</html>"); return; } DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(maxMemSize); // Location to save data that is larger than maxMemSize. factory.setRepository(new File("c:\\temp")); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // maximum file size to be uploaded. upload.setSizeMax(maxFileSize); try { // Parse the request to get file items. List fileItems = upload.parseRequest(request); // Process the uploaded file items Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet upload</title>"); out.println("</head>"); out.println("<body>"); while (i.hasNext()) { FileItem fi = (FileItem) i.next(); if (!fi.isFormField()) { // Get the uploaded file parameters String fieldName = fi.getFieldName(); String fileName = fi.getName(); String contentType = fi.getContentType(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize(); // Write the file if (fileName.lastIndexOf("\\") >= 0) { file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\"))); } else { file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1)); } fi.write(file); out.println("Uploaded Filename: " + fileName + "<br>"); } } out.println("</body>"); out.println("</html>"); } catch (Exception ex) { System.out.println(ex); } }
protected void registerService( HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException, ServletException, FileUploadException, Exception { // Check that we have a file upload request String service_name = null; String serviceFilename = null; String relative_serviceFilename = null; String service_namespace = null; String service_version = null; int sourceOfWSDL = 0; // 0: no-source , 1: wsdl from file , 2: wsdl from url int software_id = 0; int service_id = 0; String message = ""; boolean isMultipart = ServletFileUpload.isMultipartContent(request); // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Set factory constraints factory.setSizeThreshold(30000); factory.setRepository(new File("")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(30000); // Parse the request List items = upload.parseRequest(request); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { if (item.getFieldName().equals("software_id")) { software_id = Integer.parseInt(item.getString()); } else if (item.getFieldName().equals("service_name")) { service_name = item.getString(); } else if (item.getFieldName().equals("service_namespace")) { service_namespace = item.getString(); } else if (item.getFieldName().equals("service_version")) { service_version = item.getString(); } else if (item.getFieldName().equals("from") && item.getString().equalsIgnoreCase("FromUrlPath")) { sourceOfWSDL = 2; } else if (item.getFieldName().equals("from") && item.getString().equalsIgnoreCase("service_wsdl_fromFilePath")) { sourceOfWSDL = 1; } else if (item.getFieldName().equals("FromUrlPath") && sourceOfWSDL == 2) { relative_serviceFilename = new String( "/wsdl/" + software_id + "_" + service_name + "_" + ((int) (100000 * Math.random())) + ".wsdl"); serviceFilename = this.xml_rep_path + relative_serviceFilename; File uploadedFile = new File(serviceFilename); FileWriter fileWriter = new FileWriter(uploadedFile); URL wsdlurl = new URL(item.getString()); BufferedReader in = new BufferedReader(new InputStreamReader(wsdlurl.openStream())); String inputLine; while ((inputLine = in.readLine()) != null) { fileWriter.write(inputLine + System.getProperty("line.separator")); } in.close(); fileWriter.close(); } } else if (!item.isFormField() && sourceOfWSDL == 1) { relative_serviceFilename = new String( "/wsdl/" + software_id + "_" + service_name + "_" + ((int) (100000 * Math.random())) + ".wsdl"); serviceFilename = this.xml_rep_path + relative_serviceFilename; File uploadedFile = new File(serviceFilename); item.write(uploadedFile); } } VendorDBConnector vendorDBConnector = new VendorDBConnector(); service_id = vendorDBConnector.insertServiceInfo( software_id, service_name, service_version, relative_serviceFilename, xml_rep_path, service_namespace); if (service_id == -1) message = "Service has NOT been succesfully registered. Please check that the service name and the namespace are the same with the ones in the .wsdl file."; else message = "Service has been succesfully registered. You can find the registered wsdl at " + this.xml_rep_path + "/wsdl for the user.name: " + System.getProperty("user.name"); this.forwardToPage("/vendor/succ.jsp?message=" + message, request, response); }
/** * This method will upload files and store them under the dest_path. * * <p>File names are formed by <thread_name>_<counter>_originalFileName * * <p>The returned hashmap contains a list of name value pairs, where a value * * <p>can either be normal form input parameter or the uploaded file path. * * @param HttpServletRequest request * @param String dest_path upload destination path * @return HashMap */ public static HashMap parseMultipartRequest(HttpServletRequest request, String dest_path) { HashMap hmfield = new HashMap(); String threadname = Thread.currentThread().getName(); RequestContext requestContext = new ServletRequestContext(request); int filemaxsize = LPropertyManager.getInt("file.upload.maxsize", 2000000); if (FileUpload.isMultipartContent(requestContext)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(dest_path)); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(filemaxsize); List items = new ArrayList(); try { items = upload.parseRequest(request); } catch (FileUploadException e1) { gLogger.fatalize("LUploadUtil", e1.getMessage()); } Iterator it = items.iterator(); while (it.hasNext()) { FileItem fileItem = (FileItem) it.next(); if (fileItem.isFormField()) { hmfield.put(fileItem.getFieldName(), fileItem.getString()); } else { if (fileItem.getName() != null && fileItem.getSize() != 0) { File fullFile = new File(fileItem.getName()); String tempfile = dest_path + File.separator + threadname + "_" + tick() + "_" + fullFile.getName(); hmfield.put(fileItem.getFieldName(), tempfile); hmfield.put("originalfilename", fullFile.getName()); File newFile = new File(tempfile); try { fileItem.write(newFile); } catch (Exception e) { gLogger.fatalize("LUploadUtil", e.getMessage()); } } else { gLogger.errorLog("No file is selected or the file is empty!"); } } } } return hmfield; }
@Override @SuppressWarnings({"rawtypes"}) protected void doPost(final HttpServletRequest req, final HttpServletResponse response) throws ServletException, IOException { beforePostStart(); final DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(4096); // the location for saving data that is larger than getSizeThreshold() factory.setRepository(new File("/tmp")); if (!ServletFileUpload.isMultipartContent(req)) { LOG.warn("Not a multipart upload"); } final ServletFileUpload upload = new ServletFileUpload(factory); // maximum size before a FileUploadException will be thrown upload.setSizeMax(kuneProperties.getLong(KuneProperties.UPLOAD_MAX_FILE_SIZE) * 1024 * 1024); try { final List fileItems = upload.parseRequest(req); String userHash = null; StateToken stateToken = null; String typeId = null; String fileName = null; FileItem file = null; for (final Iterator iterator = fileItems.iterator(); iterator.hasNext(); ) { final FileItem item = (FileItem) iterator.next(); if (item.isFormField()) { final String name = item.getFieldName(); final String value = item.getString(); LOG.info("name: " + name + " value: " + value); if (name.equals(FileConstants.HASH)) { userHash = value; } if (name.equals(FileConstants.TOKEN)) { stateToken = new StateToken(value); } if (name.equals(FileConstants.TYPE_ID)) { typeId = value; } } else { fileName = item.getName(); LOG.info( "file: " + fileName + " fieldName: " + item.getFieldName() + " size: " + item.getSize() + " typeId: " + typeId); file = item; } } createUploadedFile(userHash, stateToken, fileName, file, typeId); onSuccess(response); } catch (final FileUploadException e) { onFileUploadException(response); } catch (final Exception e) { onOtherException(response, e); } }
/** The POST request.EPCUpload.java */ protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException { PrintWriter out = null; FileItem fileItem = null; try { String oryxBaseUrl = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/oryx/"; // Get the PrintWriter res.setContentType("text/plain"); res.setCharacterEncoding("utf-8"); out = res.getWriter(); // No isMultipartContent => Error final boolean isMultipartContent = ServletFileUpload.isMultipartContent(req); if (!isMultipartContent) { printError(out, "No Multipart Content transmitted."); return; } // Get the uploaded file final FileItemFactory factory = new DiskFileItemFactory(); final ServletFileUpload servletFileUpload = new ServletFileUpload(factory); servletFileUpload.setSizeMax(-1); final List<?> items; items = servletFileUpload.parseRequest(req); if (items.size() != 1) { printError(out, "Not exactly one File."); return; } fileItem = (FileItem) items.get(0); // replace dtd reference by existing reference /oryx/lib/ARIS-Export.dtd String amlStr = fileItem.getString("UTF-8"); amlStr = amlStr.replaceFirst("\"ARIS-Export.dtd\"", "\"" + oryxBaseUrl + "lib/ARIS-Export.dtd\""); FileOutputStream fileout = null; OutputStreamWriter outwriter = null; try { fileout = new FileOutputStream(((DiskFileItem) fileItem).getStoreLocation()); outwriter = new OutputStreamWriter(fileout, "UTF-8"); outwriter.write(amlStr); outwriter.flush(); } finally { if (outwriter != null) outwriter.close(); if (fileout != null) fileout.close(); } // parse AML file AMLParser parser = new AMLParser(((DiskFileItem) fileItem).getStoreLocation().getAbsolutePath()); parser.parse(); Collection<EPC> epcs = new HashSet<EPC>(); Iterator<String> ids = parser.getModelIds().iterator(); while (ids.hasNext()) { String modelId = ids.next(); epcs.add(parser.getEPC(modelId)); } // serialize epcs to eRDF oryx format OryxSerializer oryxSerializer = new OryxSerializer(epcs, oryxBaseUrl); oryxSerializer.parse(); Document outputDocument = oryxSerializer.getDocument(); // get document as string String docAsString = ""; Source source = new DOMSource(outputDocument); StringWriter stringWriter = new StringWriter(); Result result = new StreamResult(stringWriter); TransformerFactory tfactory = TransformerFactory.newInstance(); Transformer transformer = tfactory.newTransformer(); transformer.transform(source, result); docAsString = stringWriter.getBuffer().toString(); // write response out.print("" + docAsString + ""); } catch (Exception e) { handleException(out, e); } finally { if (fileItem != null) { fileItem.delete(); } } }
@SuppressWarnings("unchecked") public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); factory.setRepository(tempPathFile); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(4194304); Map map = new HashMap(); List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> i = items.iterator(); String destFilePath = null; String fileName = "TEMP"; String fieldName = null; FileItem fi = null; while (i.hasNext()) { fi = i.next(); fieldName = fi.getFieldName(); log.info("fieldName:" + fi.getFieldName()); if (fieldName.matches("serialno")) { fileName = fieldName; } if (fieldName.matches("ufile.*")) { File saveFile = new File(uploadPath, fileName); log.info("Saved FAX FILE to " + saveFile.getAbsolutePath()); fi.write(saveFile); if (Constant.isTraFaxServerSend()) { destFilePath = Constant.getFaxDirectory() + "/" + map.get("serialno"); if (map.get("fileType") != null && "png".equalsIgnoreCase(map.get("fileType").toString())) { destFilePath += ".png"; int width = NumberUtils.toInt(map.get("width").toString()); ImageRenderer.renderToImage(saveFile, destFilePath, width); map.put("filename", map.get("serialno") + ".png"); if (MagickImageOp.isWinOS()) { String tiffImage = null; log.debug("width:" + width); if (width > 700) { tiffImage = MagickImageOp.getInstance().buildHTiff(destFilePath); } else { tiffImage = MagickImageOp.getInstance().buildVTiff(destFilePath); } map.put("filename", tiffImage.substring(tiffImage.lastIndexOf("/") + 1)); new File(destFilePath).delete(); } saveFile.delete(); } else { destFilePath += ".xls"; File dest = new File(destFilePath); saveFile.renameTo(dest); map.put("filename", dest.getName()); } log.info("destFilePath:" + destFilePath); TrafaxStatusDao statusDao = (TrafaxStatusDao) ServiceContext.getBean("trafaxStatusDao"); statusDao.addFaxOut(map); } else { FaxWriter faxWriter = new FaxWriter(); faxWriter.write(map, saveFile); } } else { log.info(fi.getFieldName() + "=" + fi.getString()); map.put(fieldName, fi.getString()); } } } catch (Exception e) { e.printStackTrace(); } }
/** The POST request. */ protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException { // No isMultipartContent => Error final boolean isMultipartContent = ServletFileUpload.isMultipartContent(req); if (!isMultipartContent) { printError(res, "No Multipart Content transmitted."); return; } // Get the uploaded file final FileItemFactory factory = new DiskFileItemFactory(); final ServletFileUpload servletFileUpload = new ServletFileUpload(factory); servletFileUpload.setSizeMax(-1); final List<?> items; try { items = servletFileUpload.parseRequest(req); if (items.size() != 1) { printError(res, "Not exactly one File."); return; } } catch (FileUploadException e) { handleException(res, e); return; } final FileItem fileItem = (FileItem) items.get(0); // Get filename and content (needed to distinguish between EPML and AML) final String fileName = fileItem.getName(); String content = fileItem.getString(); // Get the input stream final InputStream inputStream; try { inputStream = fileItem.getInputStream(); } catch (IOException e) { handleException(res, e); return; } // epml2eRDF XSLT source final String xsltFilename = getServletContext().getRealPath("/xslt/EPML2eRDF.xslt"); // final String xsltFilename = System.getProperty("catalina.home") + // "/webapps/oryx/xslt/EPML2eRDF.xslt"; final File epml2eRDFxsltFile = new File(xsltFilename); final Source epml2eRDFxsltSource = new StreamSource(epml2eRDFxsltFile); // Transformer Factory final TransformerFactory transformerFactory = TransformerFactory.newInstance(); // Get the epml source final Source epmlSource; if (fileName.endsWith(".epml") || content.contains("http://www.epml.de")) { epmlSource = new StreamSource(inputStream); } else { printError(res, "No EPML or AML file uploaded."); return; } // Get the result string String resultString = null; try { Transformer transformer = transformerFactory.newTransformer(epml2eRDFxsltSource); StringWriter writer = new StringWriter(); transformer.transform(epmlSource, new StreamResult(writer)); resultString = writer.toString(); } catch (Exception e) { handleException(res, e); return; } if (resultString != null) { try { printResponse(res, resultString); } catch (Exception e) { handleException(res, e); return; } } }