如何在Java中利用FileUpload实现一个文件上传功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联服务紧随时代发展步伐,进行技术革新和技术进步,经过十年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行网站设计、成都网站设计、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。具体方法如下:
//创建磁盘文件项工厂 DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory(); //设置缓冲区的大小,如果文件的大小超过了缓冲区的大小,就会产生临时文件 diskFileItemFactory.setSizeThreshold(1024*1024*3); //获得核心解析类 ServletFileUpload fileUpload=new ServletFileUpload(diskFileItemFactory); //解决中文文件名上传乱码 fileUpload.setHeaderEncoding("UTF-8"); //解析request,返回list集合 Listlist = fileUpload.parseRequest(request); //获得每个部分,将遍历的值存入到一个map集合中 Map map=new HashMap<>(); //设置上传文件的文件名 String fileName=null; for (FileItem fileItem : list) { //判断普通项和文件上传项 if (fileItem.isFormField()) { //普通项 String name=fileItem.getFieldName(); String value=fileItem.getString("UTF-8"); map.put(name, value); }else { //文件上传项 //获得文件名 fileName=fileItem.getName(); //获得文件的输入流 InputStream is=fileItem.getInputStream(); //获得文件上传的路径 String path=this.getServletContext().getRealPath("/products/1"); OutputStream os=new FileOutputStream(path+"/"+fileName); int len=0; byte[] b=new byte[1024]; while ((len=is.read(b))!=-1) { os.write(b, 0, len); } is.close(); os.close(); }