CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

jsp如何上传附件到数据库中,如何下载呀?急急急

楼主QINYUEH(小小)2005-07-01 10:13:00 在 Java / Web 开发 提问

用jsp如何将附件上传到数据库中,我用的是sqlsever数据库,如何下载呢?请各位帮忙,急呀,客户等着要呢,希望能提供完整代码,在线等待 问题点数:50、回复次数:41Top

1 楼enenwan(恩仔)回复于 2005-07-01 10:18:32 得分 0

你去下载一个SmartUpload.class可以帮助你完成文件上传到服务器上Top

2 楼ms6309a(ak47ms6309a)回复于 2005-07-01 10:19:39 得分 0

第一时间看到你的帖子,但是帮不上你老兄的忙。。。  
  只能帮顶一下,别让它沉下去了。。。祝好运!!!Top

3 楼QINYUEH(小小)回复于 2005-07-01 10:45:57 得分 0

to:enenwan(恩仔)    
  我是要将附件存到数据库中,不是上传到服务器上,而且你说的方法我已经试过,但是有的文件不能下载,而且附件的中文名称都不能正确显示Top

4 楼zzyyjj(学海无崖)回复于 2005-07-01 10:55:50 得分 0

数据库中存文件的url,通过url下载Top

5 楼wmjzzu(精灵)回复于 2005-07-01 13:08:43 得分 0

上传的时候放到一个公用的位置。在数据库中放置理解地址。  
   
  下载的地方把相应的地址写出就可以了。Top

6 楼QINYUEH(小小)回复于 2005-07-01 13:27:07 得分 0

我的意思是把附件直接存到数据库中,最好能有详细代码,还有如何下载呢?请高手帮忙,急死我了Top

7 楼yabbijan(new JavaDeveloper();)回复于 2005-07-01 13:34:37 得分 4

提交的页面里的form表单要post,再加个属性  
  <form   method="post"   action="....jsp"   enctype="multipart/form-data">  
  处理页里面:  
  <%@import="import="com.jspsmart.upload.*"%>  
  <%  
  SmartUpload   myUpload   =   new   SmartUpload();  
  myUpload.initialize(pageContext);  
  myUpload.setAllowedFilesList("jpg,gif,bmp,JPG,GIF,BMP,PNG,png");//设定可接收的后缀  
  myUpload.upload();  
  int   fileNumber   =   myUpload.getFiles().getCount();//得到上传的文件个数  
  String[]   news_pic   =   new   String[2];  
          File   file=null;  
  for   (int   i=0;i<fileNumber;i++)  
  {  
  if   (!myUpload.getFiles().getFile(i).isMissing())//判断是否存在  
  {  
    file=   myUpload.getFiles().getFile(i);  
  //文件重命名另存  
  java.util.Date   dt   =   new   java.util.Date();  
  java.text.SimpleDateFormat   fmt   =   new   java.text.SimpleDateFormat("yyyyMMddHHmmssSSS");//通常按照时间重命名,避免重复  
  news_pic[i]   =   fmt.format(dt);  
  news_pic[i]   =   news_pic[i]+i+   "."   +   file.getFileExt();//保存原来的后缀  
  file.saveAs("/upload/"   +   news_pic[i]);//保存文件,前面的目录可以该,是相对路径,相对于服务器根目录  
  }  
  }  
   
  //再得到Request,可以和普通的一样使用  
  Request   req=   myUpload.getRequest();  
  String   type_id   =   req.getParameter("type_id");  
  ...  
  %>Top

8 楼yabbijan(new JavaDeveloper();)回复于 2005-07-01 13:37:10 得分 0

上面的文件重命名的字符串数组搞错了,应该用同一个字符串,不用数组Top

9 楼QINYUEH(小小)回复于 2005-07-01 14:42:39 得分 0

yabbijan(风哥)   :  
  我要将文件直接存到数据库中,然后再下载,不想用放到服务器上的方法  
  我以前也是用你的方法,但是我发现有些文件上传后不能下载,如txt,而且名称带中文的附件不能正确显示名称,高手帮忙吧Top

10 楼JOBLin(阿德)回复于 2005-07-01 14:52:36 得分 4

先将图片读出然后放到临时目录下面,然后去这个文件(sFileName)。  
  public   String   getPhoto(String   sID)   throws   CCustomException  
  {  
  try  
  {  
  CSqlQuery2   sqQuery   =   new   CSqlQuery2("zz");//zz:数据源  
  DataSource   source   =   sqQuery.getDataSource();  
  Connection   conn   =   CDataSourceUtil.GetConnection(source);  
   
  Blob   blob   =   null;  
  Statement   select   =   conn.createStatement();  
  String   sSQL   =   "select   Photo   from   Photo   where   id=   '"   +   sID   +   "'";  
  Statement   pstmt   =   conn.createStatement();  
  ResultSet   rs   =   pstmt.executeQuery(sSQL);  
  String   sFileName   ="";  
  if(rs.next())    
  {    
                    //读出流用getBinaryStream()方法。    
  InputStream   inStream   =   rs.getBinaryStream(1);    
  //图片的有效长度。    
  int   size   =   inStream.available();    
  byte[]   pictureData   =   new   byte[size];    
                    //read(byte[]   b):读取输入流的数据到指定的数组。 inStream.read(pictureData);    
  //将图片文件输出到指定目录。    
  File   f   =   File.createTempFile("zz",".jpg",new   File(System.getProperty("java.io.tmpdir")));  
  sFileName   =   f.getAbsolutePath();  
  FileOutputStream   fileOutStream   =   new   FileOutputStream(f.getAbsolutePath());    
  //写入数据。    
  fileOutStream.write(pictureData);    
  fileOutStream.close();  
  }    
  rs.close();  
  pstmt.close();  
  return   sFileName;  
  }  
  catch(CCustomException   e)  
  {  
  throw   e;  
  }  
  catch(Exception   e)  
  {  
  throw   new   CCustomException("","操作文件时出错!",e.getMessage());  
  }  
  }Top

11 楼ccm1980(海浪)回复于 2005-07-01 14:57:54 得分 5

<title>文件上传</title>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  </head>  
  <body>  
  <%  
      String   strRduItemid   =   (String)request.getParameter("strRduItemid");  
      Upload   myUpload=   new   Upload();  
      myUpload.initialize(request,   response);  
      myUpload.upload();  
      String   UID="";  
      boolean   flag=false;//判断操作是否成功  
      for   (int   i=0;i<   myUpload.getFiles().getCount();i++){  
          File   myFile   =   myUpload.getFiles().getFile(i);  
          if   (!myFile.isMissing())   {  
              myFile.saveAs("/uploadFiles/"   +   myFile.getFileName());  
              String   fileName   =   myFile.getFileName();//返回文件名称  
          try  
          {  
              db   insertRecord=new   db();  
      UID=new   java.rmi.server.UID().toString();  
      System.out.println("INSERT   INTO   EDU_FILES(FILEID,EDU_ITEMID,URL,FILEPATHNAME,UPLOAD_BY,UPLOAD_DATE)   VALUES('"+UID+"','"+strRduItemid+"','/eduWeb/uploadFiles/','"+fileName+"','jinyte',sysdate)");  
              flag   =   insertRecord.insertRow("INSERT   INTO   _EDU_FILES(FILEID,EDU_ITEMID,URL,FILEPATHNAME,UPLOAD_BY,UPLOAD_DATE)   VALUES('"+UID+"','"+strRduItemid+"','/eduWeb/uploadFiles/','"+fileName+"','jinyte',sysdate)");  
               
   
          }   catch   (DataBaseException   ex1)Top

12 楼QINYUEH(小小)回复于 2005-07-01 15:00:42 得分 0

to   :   JOBLin(阿德)    
  我的数据库用的是sqlsever,不知道附件应该用什么类型,还有,怎么下载呢?Top

13 楼singinthesky(ichoose)回复于 2005-07-01 15:20:19 得分 0

bolb类型?你要看一下怎么读写blob才行Top

14 楼QINYUEH(小小)回复于 2005-07-01 15:27:04 得分 0

sqlsever里没有blob类型吧Top

15 楼yabbijan(new JavaDeveloper();)回复于 2005-07-01 15:29:10 得分 0

jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。Top

16 楼singinthesky(ichoose)回复于 2005-07-01 15:40:26 得分 4

sqlserver没有blob,不过有image和text应该可以吧。jspsmartupload有一个很严重的bug,反编译看它的upload类就知道了,会造成内存泄露。Top

17 楼QINYUEH(小小)回复于 2005-07-01 16:02:04 得分 0

不知道image可不可以存其他文件,我现在不知道怎么下载,有没有高手提供上传和下载的完整代码,谢谢Top

18 楼QINYUEH(小小)回复于 2005-07-01 16:30:07 得分 0

高手帮忙呀,急急Top

19 楼minisun2000(红色枫叶)回复于 2005-07-01 17:34:44 得分 0

急也没用,刚刚搞定jspSmartUpload的中文文件名的下载,需要的朋友留个邮箱地址吧  
  楼主说的有些文件上传后不能下载的问题是因为你的头信息设置的不对Top

20 楼QINYUEH(小小)回复于 2005-07-04 08:41:05 得分 0

to:   minisun2000(天生不专一)  
      我的地址:qinyueh@126.com,给我发一份吧  
      头信息应该怎么设置呀Top

21 楼yyb63915(圆圆)回复于 2005-07-04 09:36:47 得分 0

学习中,帮定!!  
  Top

22 楼cheng_fu(扬风太阳雨)回复于 2005-07-04 09:50:09 得分 0

网上这样的例子不少,GOOGLE一下就出来了。Top

23 楼yinleiyoung(星际孤虹)回复于 2005-07-04 09:53:24 得分 0

to:   minisun2000(天生不专一)  
      我的地址:yinleiyoung@163.com  
      学习中,多谢!!!Top

24 楼QINYUEH(小小)回复于 2005-07-04 10:09:28 得分 0

中文问题我解决了,但是文本文件下载不了,总是出现“getOutputStream()   has   already   been   called   for   this   response”的错误,请指教Top

25 楼minisun2000(红色枫叶)回复于 2005-07-04 14:12:56 得分 0

楼主查收Top

26 楼zouyu215(玖)回复于 2005-07-04 14:40:28 得分 0

楼主,你想把附件实体存到数据库中?这好象不太好吧?  
  多数情况下是将文件实体存到服务器的指定位置,然后在数据库中只存放文件名和URL.Top

27 楼zhoubin_java(黑咖啡)回复于 2005-07-04 14:56:52 得分 0

to(小小)  
          附件是个文件,怎么存的到数据库里阿?大家的解决方案基本都是数据库里存放URl,我建议你去http://www.fiyu.net下载飞鱼的在线编辑器研究下Top

28 楼QINYUEH(小小)回复于 2005-07-05 08:45:28 得分 0

我想把附件存到数据库中是为备份数据库时方便Top

29 楼QINYUEH(小小)回复于 2005-07-05 08:58:44 得分 0

我用jspSmartUpload下载附件后,页面的其他按钮都不好用了,不知道是为什么,大家遇到过这样的问题吗?Top

30 楼oneboxlj(诡异)回复于 2005-07-08 16:34:17 得分 0

to   minisun2000(天生不专一)  
   
  麻烦您给我传一份。谢谢。邮件地址:oneboxlj@163.comTop

31 楼QINYUEH(小小)回复于 2005-07-11 10:01:47 得分 0

为什么我用了jspSmartUpload后,其他按钮都不好用了,问题还没解决,各位帮忙Top

32 楼prentice1001(徒弟)回复于 2005-07-11 11:14:22 得分 4

用了smartupload后参数不能直接从request中获取,应该这样:  
   
  Upload   upload=new   Upload();  
  ......  
  String   strP   =   upload.getRequest().getParameter("参数名称");Top

33 楼prentice1001(徒弟)回复于 2005-07-11 11:15:05 得分 0

用了smartupload后参数不能直接从request中获取,应该这样:  
   
  Upload   upload=new   Upload();  
  ......  
  String   strP   =   upload.getRequest().getParameter("参数名称");Top

34 楼joneyonly()回复于 2005-07-11 15:18:17 得分 0

gz下Top

35 楼QINYUEH(小小)回复于 2005-07-12 09:30:40 得分 0

to:prentice1001(徒弟)  
  我用你的方法参数取不出来,都是null,但直接从request中就能取出来,Top

36 楼wjg259675(郁闷的鱼)回复于 2005-07-12 09:37:14 得分 0

minisun2000(天生不专一)  
  我的信箱:wjg-20100@126.com  
  学习,谢谢!Top

37 楼gyd1(gyd1)回复于 2005-07-12 17:54:54 得分 0

麻烦给我一份   gyd1@163.comTop

38 楼fzlotuscn(无为一本)回复于 2005-07-13 08:44:36 得分 0

up!Top

39 楼dalishi1(阳光)回复于 2005-08-03 09:53:26 得分 0

xin_yu_yang@126.comTop

40 楼longsky21(longsky)回复于 2005-08-03 18:10:24 得分 5

其实网上有一个很好的例子:http://www.webjx.net/program/200410184.htm  
  但是这个例子是直接在页面上jdbc连接数据库,这样没有提现出设计的分层,和可复用。其实建立ImageVO类,提供public   byte[]   getImage(){}方法,然后在jsp页面中,转FileInputStream   为byte[],这样页面返回的就是一个VO类。这样无论你把图片写入库,还是读出都可以传入一个VO类搞定。  
  负责输入的jsp页面代码:  
  String   filename=request.getParameter("image");  
  FileInputStream   str=   new   FileInputStream(filename);  
  str.available();  
  byte[]   b   =   new   byte[str.available()];  
  str.read(b);  
  ImageVO   vo   =   new   ImageVO();  
  vo.setImage(b);  
  负责输出的jsp页面代码:  
  response.setContentType("image/jpeg");    
  ServletOutputStream   sout   =   response.getOutputStream();    
  InputStream   in   =   rs.getBinaryStream(1);    
  byte   b[]   =   new   byte[0x7a120];    
  for(int   i   =   in.read(b);   i   !=   -1;)    
  {    
  sout.write(b);    
  in.read(b);    
  }    
  sout.flush();    
  sout.close();    
  }Top

41 楼lilylamb(小羊羔)回复于 2005-09-07 08:51:33 得分 24

这里给个建议,快点结帖吧,这次给你的代码应该可以用了,Top

相关问题

  • jsp连接db2数据库的问题?? 急急!
  • 关于jsp中取数据库中字段名的问题(急急急急急,马上解答马上给分)
  • tomcat运行数据库操作的jsp文件时出现 HTTP Status 500 错误怎么解决???(急急急急)
  • 数据库接口,急,急,急,急...
  • 数据库问题,,急,急
  • 求救 数据库 急急 ^…^
  • 急急!数据库问题!!
  • 在JSP中使用mm.mysql.jdbc-2.0pre5连接mysql数据库的问题!!急急急!·#·¥#!!!在线给分!!!!!!
  • 在JSP中使用mm.mysql.jdbc-2.0pre5连接mysql数据库的问题!!急急急!·#·¥#!!!在线给分!!!!!!
  • 关于两个.jsp文件传递表单的问题,有关数据库知识急!急!急!~!~!~!~!~!~!

关键词

得分解答快速导航

  • 帖主:QINYUEH
  • yabbijan
  • JOBLin
  • ccm1980
  • singinthesky
  • prentice1001
  • longsky21
  • lilylamb

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo