`

jsp中实现一个页面纯io流上传文件

阅读更多

jsp中实现一个页面纯io流上传文

下面是upLoag.html 

<html> 
<head> 
<title>文件上传</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> 
<body> 
<b>文件上传</b></font></p> 

<form name="UploadForm" enctype="multipart/form-data" method="post" action="Xs.jsp"> 
<input type="file" name="File1" size="20" maxlength="20"> <br> 
<input type="submit"value="上传"> 
</form> 

</body> 
</html> 


 

下面是Xs.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="java.io.*"%>
<%@page import="java.sql.*"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'Xs.jsp' starting page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">    
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
  
  <body> 
  
     <%!
   //此方法用于将指定的文本转换成ISO-8859-1字符编码格式
   public String codeToString(String str) {
       String s = str;
       try {
         byte tempB[] = s.getBytes("ISO-8859-1");
         s = new String(tempB);
         return s;
       }
       catch (Exception e) {
         return s;
       }
   }
   %>
   
   <%
   //声明一个临时文件名
   String tempFileName = new String("tempFileName1");
   //在D盘建立一个临时文件,名为tempFileName
   File tempFile1 = new File("D:/", tempFileName);
   //根据指定的这个临时文件,来创建一个文件字节输出流(用于向磁盘写文件)
   FileOutputStream outputFile1 = new FileOutputStream(tempFile1);
   //由返回一个文件字节输入流(用于读文件)
   InputStream fileSource1 = request.getInputStream();
   //实例一个字节数组初始为1000kb
   byte b[] = new byte[1000];
   int n;
   //利用while循环,先读出这个文件大小,判断为不为-1,如果不为-1就输出数据,向磁盘写文件数据
   while ((n = fileSource1.read(b)) != -1) {
       outputFile1.write(b, 0, n); //将 n 个字节从b字节数组写入到outputFile1文件,偏移量从0开始
   }
   //关闭文件输出流
   outputFile1.close();
   //关闭文件输入流
   fileSource1.close();
   //实例化一个RandomAccessFile 对象.创建从中读取和向其中写入(可选)的随机存取文件流,该文件由 File 参数指定。
   //将创建一个新的 FileDescriptor 对象来表示此文件的连接。
   //mode 参数指定用以打开文件的访问模式。允许的值及其含意为:
   //"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。
   //"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
   //"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到基础存储设备。
   //"rwd"   打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到基础存储设备。
   RandomAccessFile randomFile1 = new RandomAccessFile(tempFile1, "r");
   //读取文本的下一行
   randomFile1.readLine();
   //读取文本的下一行返回一个String
   String FilePath = randomFile1.readLine();
   //对页面首次加载进行处理
   if(FilePath == null)
   {
    FilePath = "";
   }else
   {
   //得到最后一次出现\\符号的索引位置
   int position = FilePath.lastIndexOf('\\');
   //将截取到的文本(position + 1, FilePath.length() - 1)转换成ISO-8859-1格式的字符串(得到文件的名字)
   String filename = codeToString(FilePath.substring(position + 1, FilePath.length() - 1));
   //设置randomFile1文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
   randomFile1.seek(0);
   //设置一个向前键入的索引位置
   long forthEnterPosition = 0;
   //设置一个向前的索引位置
   int forth = 1;
   while ((n = randomFile1.readByte()) != -1 && (forth <= 4))
       if (n == '\n') {
         //向前键入的位置为文件中的当前偏移量。
         forthEnterPosition = randomFile1.getFilePointer();
         forth++;
       }
   //由给定的虚拟路径返回一个真正的路径(这个虚拟路径由ServletContext.getRealPath("/")方法得到)相当于新建一个文件夹
   File FileUploadDir = new File(request.getSession().getServletContext().getRealPath("/"), "upLoadFile");
   //创建此抽象路径名指定的目录。
   FileUploadDir.mkdir();
   //在这个路径下新建一个文件,文件名就是上面得到的文件名
   File saveFile1 = new File(request.getSession().getServletContext().getRealPath("/") + "upLoadFile/", filename);
   //创建从中读取和向其中写入(可选)的随机存取文件流,访问模式为 可读可写
   RandomAccessFile randomFile2 = new RandomAccessFile(saveFile1, "rw");
   //设置randomFile2文件的偏移量为randomFile1的长度
   randomFile1.seek(randomFile1.length());
   //得到randomFile1的文件偏移量赋给endPosition
   long endPosition = randomFile1.getFilePointer();
   int j = 1;
   while ((endPosition >= 0) && (j <= 4)) {
       endPosition--;
       randomFile1.seek(endPosition);
       if (randomFile1.readByte() == '\n')
         j++;
   }
   //重新设置randomFile1的文件偏移量
   randomFile1.seek(forthEnterPosition);
   //得到randomFile1的文件偏移量赋给startpoint
   long startPoint = randomFile1.getFilePointer();
   //如果开始索引处小于最后的索引处-1.因为最后一个是'\n',
   while (startPoint < endPosition - 1) {
       //就给randomFile2文件写入randomFile1的所有字节数据..就相当于复制
       randomFile2.write(randomFile1.readByte());
       //重新设置开始索引为randomFile1的文件偏移量
       startPoint = randomFile1.getFilePointer();
   }
   //关闭randomFile2
   randomFile2.close();
   //关闭randomFile1
   randomFile1.close();
   //删除临时文件
   tempFile1.delete();
   //提示xx文件上传成功
   out.print("文件:" + filename + " 上传成功!<br>");
   }
   %>
    
    <form action="Xs.jsp" method=post enctype="multipart/form-data">
     <input type="file" name="upfile" size="30">
     <br>
     <input type="submit" name="submit" value="commit">
    </form>
  </body>
</html>

 

 

分享到:
评论

相关推荐

    JSP实现文件上传(java的io流实现)

    在Java Web开发中,JSP(JavaServer ...总的来说,通过JSP和Java的IO流,我们可以实现一个基本的文件上传功能。但为了构建更健壮、安全的Web应用,还应进一步考虑异常处理、错误反馈、用户体验优化以及安全性措施。

    纯jsp实现文件上传(页面无刷新,表单数据可连续填写最后上传文件)

    本教程将详细解析如何使用纯JSP技术实现一个不刷新页面、允许用户连续填写表单数据并最终上传文件的功能。这一特性对于提高用户体验至关重要,因为它使得用户可以在同一页面上完成所有操作,无需频繁跳转或刷新页面...

    JSP实现文件上传与下载.pdf

    acceptFile.jsp文件中,使用FORM标签来上传文件,使用INPUT控件来选择要上传的文件。acceptFile.jsp文件将上传的文件保存到服务器的文件系统中。 三、JSP文件下载的实现 在示例代码中,使用了自定义的UpFile.tag...

    java IO流方式上传下载文件,源代码

    Java IO流可以创建一个`OutputStream`,通过这个流将服务器上文件的内容写入到响应对象的输出流中。同时,需要设置响应头,如`Content-Disposition`来指示浏览器以附件形式下载文件,以及`Content-Type`来指定文件的...

    JSP多文件上传(同时上传)

    在多文件上传中,JSP页面会提交表单到一个Servlet,Servlet负责接收文件并进行处理。 3. **Multipart解析器**: 文件上传涉及到二进制数据,不能直接通过HTTP的普通请求来发送。因此,我们需要使用Multipart解析器...

    利用jsp实现文件上传下载

    首先,我们需要创建一个名为 uploadFile.jsp 的页面,用于上传文件。在这个页面中,我们将使用 HTML 的 form 表单来上传文件。在 form 表单中,我们需要添加 enctype="multipart/form-data" 属性,以标明此表单的...

    一个jsp上传文件、下载文件的代码

    在这个“一个jsp上传文件、下载文件的代码”示例中,我们主要探讨的是如何在MyEclipse开发环境中利用JSP实现文件的上传和下载功能。 文件上传是Web应用中常见的功能,常用于让用户提交图片、文档等数据。在JSP中,...

    jsp实现文件上传功能组件

    1. **创建上传表单**:在JSP页面上,你需要创建一个支持multipart/form-data的表单,包括一个文件输入字段和其他必要的表单字段。 2. **配置Servlet**:在web.xml文件中,配置一个Servlet来处理文件上传请求,设置...

    简单的文件上传实现_jsp

    通过以上步骤,你可以实现一个基本的JSP文件上传功能。然而,实际项目中可能还需要考虑更多因素,如用户体验、文件存储策略、错误报告等。不断学习和实践,你将能构建出更完善、更安全的文件上传系统。

    jsp文件的上传和下载

    另一个Servlet或JSP页面,根据用户请求生成文件下载链接。 总的来说,这个项目展示了如何在Java和JSP环境中实现文件上传和下载功能,特别是在处理中文文件名时的注意事项。理解并实践这些技术对于任何Java Web...

    纯jsp上传文件到服务器(利用了struts)

    【标题】"纯jsp上传文件到服务器(利用了struts)"所涉及的知识点主要集中在Web开发领域,尤其是Struts框架的应用以及文件上传的实现。Struts是Apache组织下的一个开源项目,它是一个基于MVC(Model-View-Controller...

    上传下载一个JSP上传图片和文件实例

    2. JSP接收:当用户提交表单后,JSP页面接收到请求。在JSP中,可以使用`request.getParameter("uploadFile")`获取到文件名,然后通过`Part`接口处理上传的文件。Java Servlet 3.0及以上版本支持文件上传,需在`web....

    jsp实现文件上传下载功能

    在 JSP 应用中实现文件上传主要涉及以下几个步骤: ##### 1. 创建表单 首先需要在 HTML 表单中定义文件上传字段,通常使用 `&lt;input type="file"&gt;` 来实现。 ```html &lt;form action="upload.jsp" method="post" ...

    文件上传的jar,commons-io,flieupload

    在JSP页面中,我们需要创建一个`&lt;form&gt;`元素,设置`enctype="multipart/form-data"`,以便支持文件上传。用户选择文件后,点击提交按钮,表单数据将以多部分格式发送到服务器。 总的来说,Apache Commons IO和...

    JSP页面显示PDF,根据PDF路径在JSP页面显示PDF

    在JSP页面中,我们可以通过创建一个iframe或者使用JavaScript来加载PDF文件的URL,让浏览器处理显示。 标题“JSP页面显示PDF,根据PDF路径在JSP页面显示PDF”意味着我们要依据PDF文件在服务器上的存储路径来生成...

    Jsp上传文件所需jar包

    "Jsp上传文件所需jar包"这一主题聚焦于在JSP环境中实现文件上传所需的依赖库。在这个过程中,我们需要重点关注两个主要组件:Servlet和相关的第三方库。 首先,Servlet是Java EE规范的一部分,它允许服务器端处理...

    JSP页面文件上传下载实例

    本项目“JSP页面文件上传下载实例”聚焦于如何在JSP环境中实现文件的上传与下载功能,这对于构建交互式的Web应用程序是至关重要的。下面我们将详细探讨相关的知识点。 首先,文件上传功能通常依赖于HTTP协议中的...

    用jspSmart实现文件上传到数据库的实例

    在JSP页面中,创建一个包含文件输入类型的表单至关重要。例如: ```html &lt;%@ page import="com.jspsmart.upload.SmartUpload" %&gt; SmartUpload smartUpload = new SmartUpload(); %&gt; 上传" /&gt; ``` 这里的`...

    JSP简单的文件上传实例

    在本文中,我们将深入探讨如何使用Java Server Pages (JSP) 实现一个简单的文件上传功能。JSP是一种基于Java的动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以便实现服务器端的逻辑处理。 文件上传是Web...

    简单的上传文件的JSP源代码

    在本文中,我们将深入探讨...通过理解这一过程,开发者可以创建一个基础的文件上传系统,满足用户上传文件的需求。在实际项目中,还需要考虑安全性、性能优化和用户体验等因素,确保文件上传功能的健壮性和用户友好性。

Global site tag (gtag.js) - Google Analytics