`

jsp对上传文件下载

    博客分类:
  • jsp
阅读更多

jsp对上传文件的支持不象php中支持的那么好,直接做成了函数,也不象asp中要通过组件才能实现。jsp中可以通过javabean来实现。但是我们没有必要自己去写一个上载的bean,在网上已经有了很多成型的技术,smartupload就是其中的一个。但是smartupload是将文件先读到服务器的内存中,所以上传太大的文件(超过100兆)有可能会出问题,也算是一个美中不足吧:)
   先说一下提交的页面,smartupload组件要求用字节流的方式来提交<FORM action="upload.jsp"  encType=multipart/form-data method=post>。下面就是个例子upload.htm:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0057)http://localhost:8080/jspsmartfile/jsp/uploadTemplate.jsp -->
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY bgColor=#e6e6e6><BR>
<FORM action="upload.jsp"  encType=multipart/form-data method=post>
<TABLE>
  <TBODY>
  <TR>
    <TD><FONT color=#000000 face=helv,helvetica size=1>&nbsp;&nbsp;File 
      :&nbsp;</FONT>&nbsp;&nbsp;<INPUT  size=60 type=file  name="file"></TD></TR>
        <TR>
    <TR>
    <TD><FONT color=#000000 face=helv,helvetica size=1>&nbsp;&nbsp;File 
      :&nbsp;</FONT>&nbsp;&nbsp;<INPUT  size=60 type=file  name="file1"></TD></TR>
        <TR> 
    <TD><FONT color=#000000 face=helv,helvetica size=1>&nbsp;&nbsp;File 
      :&nbsp;</FONT>&nbsp;&nbsp;<INPUT  size=60 type=text  name="text"></TD></TR>
  <TR>
    <TD
align=right><INPUT type=submit value=Send name="send"></TD></TR></TBODY></TABLE></FORM></BODY></HTML>
 


  再来看一下接收的页面 ,我们把文件上传到服务器以后就直接把它再存入数据库中:upload.jsp

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
   //实例化上载bean
    com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
    //初始化
    mySmartUpload.initialize(pageContext);
    //设置上载的最大值
    mySmartUpload.setMaxFileSize(500 * 1024*1024);
    //上载文件
    mySmartUpload.upload();
   //循环取得所有上载的文件
   for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
   //取得上载的文件
   com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
   if (!myFile.isMissing())
    {
   //取得上载的文件的文件名
    String myFileName=myFile.getFileName();
    //取得不带后缀的文件名
    String  suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
    //取得后缀名
    String  ext= mySmartUpload.getFiles().getFile(0).getFileExt(); 
    //取得文件的大小 
    int fileSize=myFile.getSize();
    //保存路径
    String aa=getServletContext().getRealPath("/")+"jsp\\";
    String trace=aa+myFileName;
    //取得别的参数
    String explain=(String)mySmartUpload.getRequest().getParameter("text");
    String send=(String)mySmartUpload.getRequest().getParameter("send");
    //将文件保存在服务器端
    myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
    //下面的是将上载的文件保存到数据库中
    //将文件读到流中
    java.io.File file = new java.io.File(trace);
    java.io.FileInputStream fis = new java.io.FileInputStream(file);
  out.println(file.length());
   //打开数据库
   ResultSet result=null;
   String mSql=null;
   PreparedStatement prestmt=null;
   DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
   DbaObj.OpenConnection();
   //将文件写到数据库中
   mSql="insert into marklist (markname,password,marksize,markdate,MarkBody) values (?,?,?,?,?)";
   prestmt =DbaObj.Conn.prepareStatement(mSql);
   prestmt.setString(1, "aaa1");
   prestmt.setString(2, "0000");
   prestmt.setInt(3, fileSize);
   prestmt.setString(4, DbaObj.GetDateTime());
   prestmt.setBinaryStream(5,fis,(int)file.length());
   DbaObj.Conn.setAutoCommit(true) ;
   prestmt.executeUpdate();
   DbaObj.Conn.commit();
   out.println(("上载成功!!!").toString());
   }
   else
   { out.println(("上载失败!!!").toString()); }
   }//与前面的if对应
%>
 


   再说一下下载,下载分两种情况1。从数据库直接下载2。从服务器上下载

  先说从数据库直接下载的情形:就是把输入流从数据库里读出来,然后转存为文件

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
    int bytesum=0;
    int byteread=0;
  //打开数据库
  ResultSet result=null;
  String Sql=null;
  PreparedStatement prestmt=null;
  DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
  DbaObj.OpenConnection();
 //取得数据库中的数据
 Sql="select  *  from  t_local_zhongzhuan ";
 result=DbaObj.ExecuteQuery(Sql);
 result.next();

 //将数据库中的数据读到流中
InputStream inStream=result.getBinaryStream("content");
FileOutputStream fs=new FileOutputStream( "c:/dffdsafd.doc");

  byte[]  buffer =new  byte[1444];
int length;
    while ((byteread=inStream.read(buffer))!=-1)
    {
       out.println("<DT><B>"+byteread+"</B></DT>");
       bytesum+=byteread;
       System.out.println(bytesum);
   
   
       fs.write(buffer,0,byteread);
     }
%>
 


再说从服务器上下载的情形:

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<%
  String fileName = "zsc104.swf".toString();
f//读到流中
InputStream inStream=new FileInputStream("c:/zsc104.swf");
 //设置输出的格式
  response.reset();
  response.setContentType("bin");
  response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
 //循环取出流中的数据
  byte[] b = new byte[100];
  int len;
  while((len=inStream.read(b)) >0)
  response.getOutputStream().write(b,0,len); 
  inStream.close();
%>
 


 

0
0
分享到:
评论

相关推荐

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

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

    jsp文件的上传和下载

    在Java Web开发中,JSP(JavaServer Pages)常常用于创建动态网页,配合Servlet处理用户交互,例如文件的上传和下载。本项目专注于解决在JSP中实现文件上传和下载时遇到的一些常见问题,特别是针对中文文件名的处理...

    基于jsp的文件上传下载

    "基于jsp的文件上传下载"是Web应用程序中的常见需求,涉及到客户端与服务器之间的数据交互。本项目详细阐述了如何利用JSP实现文件的上传和下载功能。 首先,文件上传涉及的主要技术有HTML表单、Servlet和多部分请求...

    利用jsp实现文件上传下载

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

    Jsp文件上传下载

    2. 初始化SmartUpload对象:在JSP页面的Java代码块中,创建SmartUpload实例,并进行初始化,设置上传文件的大小限制、类型限制等参数。 3. 处理文件上传:在表单提交事件的处理函数中,调用SmartUpload的成员方法,...

    jsp文件上传下载

    【jsp文件上传下载】是一个常见的Web开发功能,用于在服务器端处理用户上传的文件并提供文件下载服务。在Java Web环境中,JSP(JavaServer Pages)是常用的动态网页技术,结合Servlet可以实现复杂的文件交互操作。 ...

    使用JSP实现上传下载文件jspSmartUpload

    // 获取上传文件 su.getFiles().iterate(new com.jspsmart.upload.Files.FileIterator() { public boolean nextFile() { com.jspsmart.upload.File file = su.getFile(); // 文件处理逻辑,例如保存到服务器 ...

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

    在IT行业中,网页应用经常需要处理用户上传和下载文件的功能,包括图片和其他文档。本实例主要探讨如何使用JSP(JavaServer Pages)实现这一过程。JSP是Java平台上的动态网页技术,允许开发者将HTML代码与Java代码...

    jsp实现上传和下载

    一、JSP上传文件 1. **表单设计**:在JSP页面中,我们需要创建一个HTML表单,包含`&lt;input type="file"&gt;`元素,允许用户选择本地的文件进行上传。表单通常还需要一个提交按钮,以及可能的文件类型和大小限制提示。 ...

    jsp实现文件上传文档jsp实现文件上传文档

    3、jspSmartUpload类说明:jspSmartUpload File类包装了一个上传文件的所有信息。通过它,可以得到上传文件的文件名、文件大小、扩展名、文件数据等信息。该类主要提供以下方法: * saveAs:将文件换名另存。 4、...

    jsp文件上传下载jar包

    在编写JSP页面和对应的Servlet代码时,参照这些库的文档和示例,可以快速实现文件上传和下载功能。同时,为了保证用户体验和安全性,还需要考虑文件大小限制、错误处理、文件存储路径规划以及防止恶意文件上传等问题...

    jsp实现文件上传下载

    本文将深入探讨如何使用Java和JSP(JavaServer Pages)技术实现文件的上传与下载功能。 首先,我们需要理解JSP的基础。JSP是一种基于Java的技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态网页生成。JSP...

    使用jspSmartUpload实现文件上传下载

    这个组件支持多文件上传,可以设定上传文件的大小限制,还能处理各种类型的文件格式。通过使用`jspSmartUpload`,开发者可以避免直接操作HTTP请求的复杂性,提高代码的可读性和可维护性。 **1. SmartUpload方法注解...

    jsp文件上传下载带删除功能

    【标题】"jsp文件上传下载带删除功能"指的是在Java Web开发中,使用JSP(JavaServer Pages)技术实现的一项基础功能,它涵盖了文件的上传、下载以及删除操作。这样的功能通常用于用户交互,比如允许用户上传个人资料...

    jsp文件上传与下载

    **JSP文件上传与下载详解** 在Web开发中,用户经常需要进行文件的上传和下载操作,例如在社交网站上分享照片、在电子商务平台购买商品时上传收据等。Java Server Pages (JSP) 提供了处理这些需求的机制。本篇文章将...

    jsp文件上传及下载

    下面,我们将深入探讨如何在JSP中实现文件上传和下载。 首先,我们需要了解HTTP协议中的POST请求在文件上传中的作用。在JSP中,文件上传通常涉及到表单(form)元素,特别是`&lt;input type="file"&gt;`标签,它允许用户...

    JSP实现文件上传和下载

    - 获取上传文件,并将其保存到服务器的某个位置。 ```java import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload....

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

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

    jsp+servlet文件上传数据库和下载

    在文件上传和下载的场景中,Servlet接收由JSP页面提交的HTTP请求,执行实际的业务逻辑,比如接收上传文件、保存到服务器或从服务器读取文件准备下载。 3. 文件上传: 文件上传一般通过HTTP的POST请求实现。在JSP中...

Global site tag (gtag.js) - Google Analytics