jsp如何上传附件到数据库中,如何下载呀?急急急
用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文件传递表单的问题,有关数据库知识急!急!急!~!~!~!~!~!~!




