网站建设
  简约型网页设计套餐998
  实惠型网站建设套餐2580
  综合型网站制作套餐4980
  网站改版与网站维护
  行业网站建设方案
  大型网站建设解决方案
  企业网站建设流程
  帝网科技网站设计与网站制作
建站FAQ
·网站空间问题解答
·企业邮箱问题解答
 
酷站欣赏
·房产酷站(379)
·综合门户(8 9)
·建筑装饰(603)
·手机通讯(354)
·生活购物(376)
·医疗保健(199)
·文化摄影(602)
·休闲体育(399)
>>更多酷站欣赏
网站优化
·Google(谷歌)优化   ·百度(BaiDu)优化
·雅虎(Yahoo)优化    ·Alexa排名优化   
·Google AdSense   ·DMOZ目录提交  
建站知识
·网站建设知识·网站名词解释·网站运营知识
·网络营销知识·搜索引擎知识·实用技术文摘
网站推广
百度网站推广 google网站推广
搜狐网站推广 网易网站推广
新浪网站推广   雅虎网站推广
  您当前位置: 当前位置:帝网科技 >> web开发 >> JSP专栏 >> 浏览文章
 
 
jsp上传组件smartupload介绍
作者:佚名 来源:帝网科技 日期:2010年03月12日 点击数:


  jsp对上传文件的支持不象php中支持的那么好,直接做成了函数,也不象asp中要通过组件才能实现。jsp中可以通过javabean来实现。但是我们没有必要自己去写一个上载的bean,在网上已经有了很多成型的技术,smartupload就是其中的一个。但是smartupload是将文件先读到服务器的内存中,所以上传太大的文件(超过100兆)有可能会出问题,也算是一个美中不足吧:)

  先说一下提交的页面,smartupload组件要求用字节流的方式来提交

。下面就是个例子upload.htm:

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  align=right>

  File

  :   

  File

  :   

  File

  :   

  再来看一下接收的页面 ,我们把文件上传到服务器以后就直接把它再存入数据库中: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

  //取得上载的文件

  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("

"+byteread+"
");

  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();

  %>

  好了,到这里只要不是太大的文件的上传下载的操作都可以完成了

  相关文章
 
·如何建立JSP操作以提高数据库访问效率
·servlet 生成静态HTML的方法
·使用JSP实现简易的SQL报表
·浅析Servlet和Jsp中的多国语言显示
·JSP/Servlet/JSF:自定义标签的另类体
·使用JSP+javascript打造二级级联下
·实例:JSP结合XML+XSLT将输出转换HTML
·JSP教程:JSP页面跳转的实战规则
·关于JSP中的offsetparent
·JSP中errorPage设置方法
·JSP用bean获取各种参数
·JSP基础知识教程
·在Eclipse中部署Tomcat,并运行JSP
·jsp教程:深入浅出URL编码
·JSP技术优缺点深入分析(2)
·Jsp环境下ajax乱码问题的解决方法
·JSP技术优缺点深入分析(1)
·jsp上传组件smartupload介绍
·JSP中文字符乱码处理的2种方法
·jsp入门:Jsp运行原理
 
 

公司环境 | 合作伙伴 | 人才招聘 | 付款方式 | 关于我们

地址:广州市天河区中山大道中120号D805 电话:020-82529556 传真:020-82529556
广州帝网网络科技有限公司 版权所有 粤ICP备08119341号