JSP文件上传

JSP 提供了上传和下载的功能,用户釆用此功能,可以轻松实现文件的传输。下面介绍文件上传与下载的操作。

用户通过一个 JSP 页面上传文件给服务器时,该 JSP 页面必须含有 File 类型的表单, 并且表单必须将 enctype 的属性值设置为 multipart/form-data。File 类型表单如下:

  1. <form action="接受上传文件的页面" method="post" enctype="multipart/form-data">
  2. <input type="File" name="picture">
  3. </form>

JSP 引擎可以让内置对象 request 调用方法 getInputStream() 获得一个输入流,通过这输入流读入用户上传的全部信息,包括文件的内容以及表单域的信息。

【例1】用户通过 9-9.jsp 页面上传文本文件 a.txt。request 获得一个输入流读取用户上传的全部信息,包括表单的头信息以及上传文件的内容;如何去掉表单的信息以及获取文件的内容。

在 accept.jsp 页面,内置对象 request 调用方法 getInputStream() 获得一个输入流 in,用 FileOutputStream 类再创建一个输出流 o。输入流 in 读取用户上传的信息,输出流 o 将读取的信息写入文件 B.txt。用户上传的全部信息,包括文件 a.txt 的内容以及表单域的信息存放于服务器的 C:/1000 目录下的 B.txt 文件中。文件 B.txt 的前 4 行(包括一个空行)以及倒数 5 行(包括一个空行)是表单域的内容,中间部分是上传文件 a.txt 的内容。

9-9.jsp 的代码如下:

  1. <%@page contentType="text/html;charset=utf-8"%>
  2. <html>
  3. <body>
  4. <P>选择要上传的文件:<br>
  5. <form action="accept.jsp" method="post" engtype="multipart/form-data">
  6. <input type=File name="boy" size="38">
  7. <br>
  8. <input type="submit" name="g" value="提交">
  9. </form>
  10. </body>
  11. </html>

accept.jsp 的代码如下:

  1. <%@page contentType="text/html;charset=utf-8" %>
  2. <%@page import="java.io.*" %>
  3. <html>
  4. <body>
  5. <%
  6. try
  7. {
  8. InputStream in=request.getInputStream();
  9. File dir=new File("D:/l000");
  10. dir.mkdir();
  11. File f=new File(dir,"B.txt");
  12. FileOutputStream o=new FileOutputStream(f);
  13. byte b[]=new byte[1000];
  14. int n;
  15. while((n=in.read(b))!=-1)
  16. o.write(b,0,n);
  17. in.close();
  18. out.print ("文件已上传");
  19. }
  20. catch(IOException e)
  21. {
  22. out.print("上传失败"+e);
  23. }
  24. %>
  25. </body>
  26. </html>

B.txt、9-9.jsp 和 accept.jsp 的运行效果如图 1 所示。


a) B.txt 的内容

 


b) 9-9.jsp 的运行结果


c) accept.jsp 的运行结果

图1 运行结果

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值