1、 form-data; name=name 【空行】澶 濂?-7dd10711a052c 又一个新的文件开始了file; filename=aa.txtContent-Type: text/plainHello-7dd10711a052c-3.2、服务器如何获取到数据呢?通过request.getParmeter获取enctype=multipart/form-data表单中的数据,是获取不到的。只能通过req.getInputStream 获取到是请求的所有正文。C以下是代码是自己解析文件上传:public class UpServlet extends HttpServlet public
2、 void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /设置编码 request.setCharacterEncoding(UTF-8); /测试获取数据 String name = request.getParameter( System.err.println(name is:+name);+= String contentType = request.getHeader(Content-Type contentType=cont
3、entType.substring(contentType.lastIndexOf(=)+1);contentTyupe is:+contentType); /获取所有字节数 InputStream in = request.getInputStream();/ byte b = new byte1024;/ int len = 0;/ while(len=in.read(b)!=-1)/ String s = new String(b,0,len);/ System.err.print(s);/ 以下是正文: BufferedReader br = new BufferedReader(ne
4、w InputStreamReader(in); String line = null; br.readLine(); while(line=br.readLine()!=null) if(!line.contains(contentType) System.err.println(line); 3.3、用第三方组件实现文件上传组件名称说明公司fileupload用的最多,集成到struts中,重点。Apache - 1.2,3cos性能最快,struts支持配置的cos.Orialliy = 0.9jspsmartupload200M以上直接崩溃。3.4、用fileupload实现文件上传将
5、jar包放到lib目录下Fileupload的核心类:DiskfileItemFactory :设置文件上传时的缓冲区大小和临时目录。ServletFileUpload :上传核心文件,用于解析request。从reqeust中解析出每一个File对象。示例:第一步:开发一个Servlet第二步:创建一个保存文件的目录第三步:开发页面3.5、对上传的代码进行优化3.6、上传多个文件就是在后台 List fis = ServletFileUpload.parseRequest(request); 遍历fis就可以了。先开发界面:开发Up3Servlet封装上传的所有文件信息 名称,大小,类型tr
6、y ServletFileUpload up = new ServletFileUpload(disk); List fs = up.parseRequest(request); String savepath = getServletContext().getRealPath(/up /声明一个集合,用于保存所有上传的文件信息Map ups = new ArrayList(); for (FileItem f : fs) / 获取文件名 String fileName = f.getName(); FileUtils.copyInputStreamToFile(f.getInputStrea
7、m(), new File( savepath + / + fileName); /每次一个新的map Map map = new HashMap map.put(fileName,fileName);size,f.getSize();type,f.getContentType(); ups.add(map); f.delete(); /转发到 request.setAttribute(ups,ups); request.getRequestDispatcher(/jsps/show.jsp).forward(request, response); catch (Exception e) e.
8、printStackTrace();第四步:3.6、上传图片时解决重名问题- 同时可以解决显示图片的问题 /对文件修改名称,保存扩展名 String extName = fileName.substring(fileName.lastIndexOf(.); String uuid = UUID.randomUUID().toString().replace(-, String newFileName = uuid+extName; + newFileName); /保存新的名称newName,newFileName);3.7、上传文件时,能不能说明mons.fileupload Interfa
9、ce FileItem开发一个页,带有说明的上传开发Servletpublic class Up4Servlet extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException DiskFileItemFactory disk = new DiskFileItemFactory(); disk.setSizeThreshold(1024 * 10); File file = new File(
10、d:/b if (file.exists() disk.setRepository(file); try Map mm = new HashMap / 遍历且判断是否是文件 if (f.isFormField() / 则获取到它的文本的内容 String desc = f.getString( System.err.println(说明是: + desc); mm.put(desc, desc); else String fileName = f.getName(); FileUtils.copyInputStreamToFile(f.getInputStream(), new File(sa
11、vepath + /放到reqmm,mm);/jsps/show2.jsp3.7、上传多个都带说明的代码: list = new ArrayList /声明一个map mm = null; for(FileItem fi:fs) if(fi.isFormField() String desc = fi.getString(,desc); /放到list list.add(mm); else String fileName = fi.getName(); FileUtils.copyInputStreamToFile(fi.getInputStream(), mm = new HashMap,fi.getSize();list,list);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2