`
laorer
  • 浏览: 433722 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

<转>JSP实现文件上传

阅读更多

JSP实现文件上传

http://www.heima123.com/html/2006-10/20016.shtm

搞了几天,在网上查了不少资料,终于把上传功能解决了。程序如下:

package linkman.helper;

import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletInputStream;

public class UpLoadBean {
 private String SavePath = null;
 private String FileName = null;
 private String Sperator = null;
 private String ErrMsg = "正常返回";
 
 private byte[] bt = new byte[4096];
 private byte[] prebt = new byte[4096];
 private int t = -1;
 private long FileSize = -1;
 private boolean UserDefineFileName = false;
 
 /////////////////////////////////////////////////
 public UpLoadBean () {
  FileName = bringFileName ();
 }
 public UpLoadBean (String savepath) {
  SavePath = savepath;
  FileName = bringFileName ();
 }
 
 /////////////////////////////////////////////////
 // 文件名信息
 private String bringFileName () {
  Calendar dt = Calendar.getInstance ();
  String str = "" + dt.get (Calendar.YEAR) + dt.get (Calendar.MONTH) + dt.get (Calendar.DAY_OF_MONTH);
  str = str + dt.get (Calendar.HOUR) + dt.get (Calendar.MINUTE) + dt.get (Calendar.SECOND);
  return str;
 }
 
 public void setFileName (String filename) {
  FileName = filename;
  UserDefineFileName = true;
 }
 public String getFileName () {
  return FileName;
 }
 /////////////////////////////////////////////////
 // 上传文件主程序
 public boolean UpLoad (HttpServletRequest request) throws Exception {
  if (SavePath == null) {
   setErrorMessage ("未设置保存上传文件的路径");
   return false;
  }
  request.setCharacterEncoding("utf-8");
  ServletInputStream in = request.getInputStream ();
  ////////////////////////////////////////////
  // 获取得一行的分隔标志
  t = in.readLine (bt, 0, bt.length);
  if (t != -1) {
   Sperator = new String (bt, 0, t);
   Sperator = Sperator.substring (0, 28);
   t = -1;
  }
 
  ////////////////////////////////////////////
  // 取扩展名并设定文件全名
  do {
   t = in.readLine (bt, 0, bt.length);
   String s = new String (bt, 0, t);
   int index = s.indexOf ("filename=\"");
   if (index != -1) {
    s = s.substring (index + 10);
    index = s.indexOf ("\"");
    s = s.substring (0, index);
    index = s.lastIndexOf (".");
    if (!UserDefineFileName) {
     FileName = FileName + s.substring (index); // 设定文件全名
    }
    t = -1;
   }
  } while (t != -1);
 
  ////////////////////////////////////////////
  // 取文件内容
  FileOutputStream out = new FileOutputStream (SavePath + "\\" + FileName);
 
  t = in.readLine (bt, 0, bt.length);
  String s = new String (bt, 0, t);
  int i = s.indexOf ("Content-Type:");
  if (i == -1) {
   setErrorMessage ("上传的不是文件");
   return false;
  } else {
   in.readLine (bt, 0, bt.length); // 去掉一个空行
   t = -1;
  }
 
  boolean state = true;
  long trancsize = 0;
  try {
   t = in.readLine (bt, 0, bt.length);
   while (t != -1) {
    s = new String (bt, 0, t);
    if (s.length () > 28) {
     s = s.substring (0, 28);
     if (s.equals (Sperator)) {
      break;
     }
    }
   
    /*
     if (bt[0] == 45 && bt[1] == 45 && bt[2] == 45 && bt[3] == 45 && bt[4] == 45) {
      break;
     }
    */
    if (FileSize != -1) {
     if (trancsize >= FileSize) {
      throw new Exception ("上传文件太大");
     }
    }
    out.write (bt, 0, t);
    trancsize += t;
    t = in.readLine (bt, 0, bt.length);
   }
  } catch (Exception e) {
   state = false;
   out.close ();
   setErrorMessage (e.getMessage ());
   File tmp = new File (SavePath, FileName);
   if (!tmp.delete()) {
    setErrorMessage (e.getMessage () + ",清除未完成");
   }
  } finally {
   if (state) {
    out.close ();
   }
   return state;
  }
 }
 /////////////////////////////////////////////////
 // 上传文件错误信息
 public void setErrorMessage (String errormessage) {
  ErrMsg = errormessage;
 }
 public String getErrorMessage () {
  return ErrMsg;
 }
 /////////////////////////////////////////////////
 // 文件大小信息
 public void setFileSize (long size) {
  FileSize = size;
 }
 
 public long getFileSize () {
  return FileSize;
 }
}// end class

分享到:
评论

相关推荐

    JSP网络编程从基础到实践

    实例34 随机读取文件程序示例&lt;br&gt; 实例35 故事接龙&lt;br&gt; 实例36 文件上传&lt;br&gt; 实例37 在浏览器中打开文件&lt;br&gt; 实例38 文件下载&lt;br&gt; 实例39 用jspSmartUpload组件实现文件上传&lt;br&gt; 实例40 应用jspSmartUpload组件进行...

    JSP高级编程

    用JSP实现常见的Web应用 &lt;br&gt;7.1 常见的Web应用及分析 &lt;br&gt;7.1.1 留言板、论坛和社区 &lt;br&gt;7.1.2 聊天室 &lt;br&gt;7.1.3 搜索引擎 &lt;br&gt;7.1.4 电子商务 &lt;br&gt;7.1.6 后台管理系统 &lt;br&gt;7.2 留言板 &lt;br&gt;7.2.1 功能分析 &lt;br&gt;...

    JSP实践之旅.exe

    Tomcat.JSP&lt;br&gt;JSWDK环境安装与配置&lt;br&gt;Resin服务器平台介绍&lt;br&gt;Resin在IIS...jsp实现购物程序&lt;br&gt;用jspsmart Bean实现文件上载&lt;br&gt;用jsp连接mySQL数据库&lt;br&gt;基本内置组件&lt;br&gt;JDBC应用示例&lt;br&gt;一个用JSP做的日历&lt;br&gt;JSP...

    jsp编程技巧集锦

    使用SmartUpload实现文件上传?&lt;br&gt;51. 使用iReport和Jasperreport开发报表?&lt;br&gt;52. 使用iText生成PDF?&lt;br&gt;53. 制作图片水印?&lt;br&gt;54. 在页面中屏蔽键盘功能键?&lt;br&gt;55. 禁止用户复制网页内容?&lt;br&gt;56. 实现不在...

    Springboot集成Ueditor详细文档说明

    Springboot 集成 Ueditor 详细文档说明 Springboot 集成 UeditorRichText 编辑器时...通过以上配置和解决方法,可以解决 Springboot 集成 UeditorRichText 编辑器时遇到的问题,实现图片上传和富文本内容的正确显示。

    jspSmartUpload实现文件上传下载

    ### jspSmartUpload实现文件上传下载 #### 一、SmartUpload简介 SmartUpload是一个非常流行的Java Web组件,用于处理文件的上传与下载操作。它简化了文件上传过程中的复杂度,使得开发人员能够轻松地在Web应用中...

    java应用软件程序设计

    ReadTestquestion&lt;br&gt;7.5. 课程设计作业&lt;br&gt;第8章 日历记事本&lt;br&gt;8.1. 设计内容&lt;br&gt;8.2. 设计要求&lt;br&gt;8.3. 总体设计&lt;br&gt;8.4. 具体设计&lt;br&gt;8.4.1. 运行效果与程序发布&lt;br&gt;8.4.2. 主类CalendarPad&lt;br&gt;8.4.3. 记事本...

    jvaa jsp技术SmartUpload文件上传例子

    本文将详细介绍如何使用JspSmartUpload实现文件上传的技术。文件上传是Web开发中的一项常见需求,SmartUpload是一个流行的Java上传组件,提供了强大的文件上传功能。 首先,为了实现文件上传,需要在FORM表单中添加...

    jsp上传文件教程

    本教程将详细讲解如何使用JSP实现文件上传,以及相关的重要知识点。 首先,理解文件上传的基本原理。在HTTP协议中,表单提交通常采用POST方法,当用户选择文件并提交表单时,文件数据会被编码成多部分/混合内容...

    基于jsp+javabean+mysql三层结构的动态购物网站

    基于jsp+javabean+mysql三层结构的...把class里的文件上传到你的jsp主机的class目录。&lt;br&gt;&lt;br&gt;3。分别修改myshop下的config.jsp、class/myshop下的config.java文件。&lt;br&gt;&lt;br&gt;4。把所有mysqldata文件倒入你的数据库。

    springmvc上传文件所需jar包

    在Spring MVC中,实现文件上传需要创建一个Controller,使用`@RequestParam("file") MultipartFile file`注解来接收上传的文件,并进行相应的处理,如保存到服务器、验证大小和类型等。同时,前端HTML表单需要设置`...

    使用JSP实现文件的上传和下载

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建...总结,使用JSP实现文件上传和下载需要理解HTTP协议、Servlet生命周期以及文件I/O操作。同时,注意安全性和性能优化,以确保Web应用的稳定性和用户体验。

    用jspsmartupload进行上传下载

    通过使用jspSmartUpload,开发者能够在JSP环境下轻松实现文件上传与下载功能。这一过程不仅简化了开发工作量,还提高了文件处理的安全性和灵活性。此外,该库还提供了丰富的文档和支持资源,帮助用户更好地理解和...

    JSP上传文件Servlet(Apache fileUpload)同时text文本

    本教程将详细介绍如何使用JSP和Servlet结合Apache Commons FileUpload库实现文件上传,并同时处理text文本。 首先,我们需要在项目中引入Apache Commons FileUpload库。通常,这可以通过在pom.xml文件中添加依赖来...

    JAVA Web程序设计-3期(KC006) 13-1-3应用jspSmartUpload组件实现文件上传的操作步骤.doc

    ### 使用jspSmartUpload组件实现文件上传的操作步骤 #### 学习目标 - 掌握使用jspSmartUpload组件实现文件上传的基本方法。 #### 知识要点 - jspSmartUpload组件中上传类的使用。 - jspSmartUpload组件的适用场景...

    springboot实现文件上传下载.zip

    这个简单的示例展示了如何在Spring Boot中实现文件上传和下载的基本功能。在实际项目中,你可能需要考虑更多的因素,比如文件大小限制、安全问题(如防止路径遍历攻击)、错误处理等。对于大规模应用,可能还需要...

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

    "JSP实现文件上传与下载" JSP(Java Server Pages)是一种动态网页技术,用于开发基于Web的应用程序。JSP技术可以和其他Java技术集成,实现复杂的Web应用程序。下面是JSP实现文件上传与下载的知识点总结: 一、JSP...

    jspSmartUpload的使用—实现文件上传.pdf

    本篇文章将详细介绍如何使用 JSP SmartUpload 实现文件上传。 首先,确保满足使用 JSP SmartUpload 的前提条件。在HTML表单中,上传文件功能需要以下设置: 1. 表单提交方式必须为 `POST`,因为文件数据通常较大,...

    jsp通过jspSmartUpload上传和下载文件

    ### jsp通过jspSmartUpload实现文件上传与下载 #### 一、文件上传篇 ##### ㈠ 表单要求 在使用jspSmartUpload进行文件上传时,必须满足以下两个基本要求: 1. **METHOD应设置为POST**:这是因为文件上传通常涉及...

Global site tag (gtag.js) - Google Analytics