java实现文件的上传

上传人:第*** 文档编号:30582136 上传时间:2018-01-30 格式:DOC 页数:9 大小:156.50KB
返回 下载 相关 举报
java实现文件的上传_第1页
第1页 / 共9页
java实现文件的上传_第2页
第2页 / 共9页
java实现文件的上传_第3页
第3页 / 共9页
java实现文件的上传_第4页
第4页 / 共9页
java实现文件的上传_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《java实现文件的上传》由会员分享,可在线阅读,更多相关《java实现文件的上传(9页珍藏版)》请在金锄头文库上搜索。

1、Comment W1: 设置表单类型。java实现文件的上传 1、文件上传的核心点1:用 来声明一个文件域。File:_ .2:必须要使用 post方式的表单。3:必须设置表单的类型为 multipart/form-data.是设置这个表单传递的不是 key=value值。传递的是字节码.对于一个普通的表单来说只要它是 post类型。默认就是Content-type:application/x-www-from-urlencoded 表现形式1:在 request的请求头中出现。2:在 form声明时设置一个类型 enctype=application/x-www-form-urlencode

2、d;如果要实现文件上传,必须设置 enctype=“multipart/form-data”表单与请求的对应关系:Comment W2: 一定要注意。2、如何获取上传的文件的内容以下是自己手工解析 txt文档package cn.itcast.servlet;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import javax.servlet.Servl

3、etException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/* 如果一个表单的类型是post且enctype 为multipart/form-date* 则所有数据都是以二进制的方式向服务器上传递。* 所以req.getParameter(xxx)永远为null。* 只可以通过req.getInputStream()来获取数据,获取正文的数据* * author wangj

4、ianme*/public class UpServlet extends HttpServlet public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException req.setCharacterEncoding(UTF-8);Comment W3: 读取分隔行。Comment W4: 获取文件名。Comment W5: 获取项目的路径。Comment W6: 重点。String txt = req.getParameter(txt);/返回的是nu

5、llSystem.err.println(txt is :+txt);System.err.println(=);InputStream in = req.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(new InputStreamReader(in);String firstLine =

6、br.readLine();/读取第一行,且第一行是分隔符号String fileName = br.readLine();fileName = fileName.substring(fileName.lastIndexOf()+1);/ bafasd.txtfileName = fileName.substring(0,fileName.length()-1);br.readLine();br.readLine();String data = null;/获取当前项目的运行路径String projectPath = getServletContext().getRealPath(/up);

7、PrintWriter out = new PrintWriter(projectPath+/+fileName);while(data=br.readLine()!=null)if(data.equals(firstLine+-)break;out.println(data);out.close();3、使用 apache-fileupload处理文件上传框架:是指将用户经常处理的业务进行一个代码封装。让用户可以方便的调用。目前文件上传的(框架)组件:Apache-fileupload - Orialiy COS 2008() - Jsp-smart-upload 200M。用 fileup

8、load上传文件:需要导入第三方包:Apache-fileupload.jar 文件上传核心包。Apache-commons-io.jar 这个包是 fileupload的依赖包。同时又是一个工具包。核心类:DiskFileItemFactory 设置磁盘空间,保存临时文件。只是一个具类。ServletFileUpload 文件上传的核心类,此类接收 request,并解析 reqeust。servletfileUpload.parseRequest(requdest) - List一个 FileItem 就是一个标识的开始: -243243242342 到 -245243523452就是一个

9、 FileItem第一步:导入包第二步:书写一个 servlet 完成 doPost 方法/* DiskFileItemFactory构造的两个参数* 第一个参数:sizeThreadHold - 设置缓存( 内存)保存多少字节数据,默认为10K* 如果一个文件没有大于10K,则直接使用内存直接保存成文件就可以了。* 如果一个文件大于10K,就需要将文件先保存到临时目录中去。* 第二个参数 File 是指临时目录位置*/public class Up2Servlet extends HttpServlet public void doPost(HttpServletRequest req, H

10、ttpServletResponse resp)throws ServletException, IOException req.setCharacterEncoding(UTf-8);/获取项目的路径String path = getServletContext().getRealPath(/up);/第一步声明diskfileitemfactory工厂类,用于在指的磁盘上设置一个临时目录DiskFileItemFactory disk = new DiskFileItemFactory(1024*10,new File(d:/a);/第二步:声明ServletFileUpoload ,接收

11、上面的临时目录ServletFileUpload up = new ServletFileUpload(disk);/第三步:解析requesttry List list = up.parseRequest(req);/如果就一个文件FileItem file = list.get(0);/获取文件名,带路径String fileName = file.getName();fileName = fileName.substring(fileName.lastIndexOf()+1);/获取文件的类型String fileType = file.getContentType();/获取文件的字节

12、码InputStream in = file.getInputStream();/声明输出字节流OutputStream out = new FileOutputStream(path+/+fileName);/文件copybyte b = new byte1024;int len = 0;while(len=in.read(b)!=-1)out.write(b,0,len);out.close();long size = file.getInputStream().available();/删除上传的临时文件file.delete();/显示数据resp.setContentType(tex

13、t/html;charset=UTf-8);PrintWriter op = resp.getWriter();op.print(文件上传成功 文件名:+fileName);op.print(文件类型:+fileType);op.print(文件大小(bytes) +size); catch (Exception e) e.printStackTrace();4、上传多个文件第一步:修改页面的表单为多个 input type=”file” method=post enctype=multipart/form-dataFile1:File2:第二步:遍历 listpublic class Up3

14、Servlet extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding(UTF-8);String path = getServletContext().getRealPath(/up);/声明diskDiskFileItemFactory disk = new DiskFileItemFactory();disk.setSize

15、Threshold(1024*1024);disk.setRepository(new File(d:/a);/声明解析requst的servletComment W7: 遍历所有的 List。Comment W8: 直接使用工具类实现文件上传。Comment W9: 删除临时文件。ServletFileUpload up = new ServletFileUpload(disk);try/解析requstList list = up.parseRequest(request);/声明一个list封装上传的文件的数据List ups = new ArrayList();for(FileItem file:list)Map mm = new HashMap();/获取文件名String fileName = file.getName();fileName = fileName.substring(fileName.lastIndexOf()+1);String fileType = file.getContentType();InputStream in = file.getInputStream();int size = in.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 外语文库 > 英语学习

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号