JSP使用输入流和输出流实现文件上传示例

来源:互联网 发布:数控线切割图形3b编程 编辑:程序博客网 时间:2024/05/17 11:04

以下代码演示了在JSP页面中使用输入流和输出流实现文件上传

1.       创建upload.jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<html>

  <head>

    <title>一个简单的文件上传</title>

  </head>

  <body>

    <form action="doUpload.jsp" method="post">

      标题<input type="text" name="title"><br>

      文件位置:<input type="file" name="mfile"><br>

      <input type="submit" value="提交">

    </form>

  </body>

</html>

 

2.    创建doUpload.jsp页面

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GBK"%>

<html>

  <head>

    <title>My JSP 'doUpload.jsp' starting page</title>

  </head>

  <body>

    <%

       request.setCharacterEncoding("GBK");

       String title = request.getParameter("title"); //获取页面提交的标题信息

       String myFile = request.getParameter("mfile"); //获取页面提交的文件

       int indexOf = myFile.lastIndexOf("//");  //获取最后一个“/”所在的索引位

       String fileName = myFile.substring(indexOf); //获取文件上传的文件名

     //创建输出流把指定的文件写入WEB工程的upload目录下(需要在WebRoot目录下创建upload目录)

       FileOutputStream fos = new FileOutputStream(request.getRealPath("/upload/"+fileName));

       //创建输入流读取指定文件

       java.io.FileInputStream fis = new java.io.FileInputStream(new java.io.File(myFile));

        byte[] buffer = new byte[1024];

         int len = 0;

         while ((len = fis.read(buffer)) > 0) //循环读取文件到输出流

         {

            fos.write(buffer , 0 , len);   //使用输出流输出文件。

         }

        

         fis.close();

         fos.close();

     %>

    

    <img src="../upload<%=fileName %>"> <!--显示上传图片  -->

  </body>

</html>