大哥些,怎么在JSP页面里,上传图片存到数据库里 拿oracle说,从request里边读入inputStream,然后先保存其它字段,完了后select blob字段的cursor,然后从inputStream写入 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参阅用jsp对oracle的clob字段进行操作 作者:未知 更新人:Legume 来源:未知 更新时间:2004.08.24 投稿信箱: tg*ddvip.com CLOB一般用来存放超大广西,如果是2进制文件一般用BLOB. 假设col2是CLOB: 写操作: String sql = "insert into tb_commendtemp (col1,col2) values('111',?)"; string s = "长文本"; StringBufferInputStream sbin = new StringBufferInputStream(s); PreparedStatement ps = query.getPreStmt(sql); ps.setAsciiStream(1,sbin,s.length()); int i = ps.executeUpdate(); ps.close(); sbin.close(); if(i>0) ok; 如果是二进制文件就用FileInputStream写进去 读的时候只要 rs.getAsciiStream(); rs.getUnicodeStream(); rs.getBinaryStream(); 看它们的名字就知道是得到什么类型的的数据流了. 如果存放的是二进制文件,比如图形,执行文件,压缩文件最好还是blob保险. 写和读也要用二进制流, DataInputStrean和DatOutputStream.有时用UNICODE的字符流也能行,但 不保险.如果是文本,用Clob和LONG都行.读和写用 BuffreedReader和PrintWriter更方便. 要想在一个网页上同时显示从程序中推出的文字和图象,这项技术目前在国内 可以值100万. 因为目前浏览器要想同时显示HTML文档和image文档,你到目前在国内还没有 发现,要用到server push技术.你想想一下电子邮件的文档头,是复合型的,把 数据用Base 64编码就可以通过特定的文档类型同时显示文字和图片了.可是浏览器目前还做不到. blob:二进制,如果exe,zip clob:单字节码,比如一般的文本文件. nlob:多字节码,如UTF格式的文件. 如果带格式的文件如果WORD,EXECL等如果要保持格式不被破坏,最好以BLOB 方式,它近似于以byte的原始方式存放,缺点当然是操作时效率低(慢). 操作CLOB,别的可以看我上面的写和读的例子,只要注意把 写pstmt.setBinaryStream()改成rs.setAsciiStream(); 读pstmt.getBinaryStream()改成rs.getBinaryStream(); 在从文件读成流的时候用Reader而不要用DataInuputStream 这个太长,自己看吧http://www.uml.org.cn/sjjm/oracle3js.htm jsp上传的一个很好的例子 文件上传原理简单实现 要实现文件上载,我们必须先了解上载文件的HTTP请求。下面这个简单的应用示范了如何上载文件以及把HTTP请求的原始数据写入文件。用文本编辑器查看该文件即可了解请求的格式,在此基础上我们就可以提取出上载文件的名字、文件内容以及原本混合在一起的其他信息。 在这里我们写一个简单的html页面up.html,提供一个表单,用户从这里选择文件并把文件上载到服务器。 <html> <head> <title>文件上载</title> </head> <body> <form action="upjsp.jsp" enctype="MULTIPART/FORM-DATA" method=post> <br /> 公司: <input type="text" name="company" /> <br /> 选择要上载的文件 <input type="file" name="filename" /> <br /> <input type="submit" value="上载" /> </form> </body> </html> 注意,<form>标记有一个enctype属性,属性值是"MULTIPART/FORM-DATA"。还有个type为file的输入框是用来选择上传文件的。 表单的action属性值是upjsp.jsp,这是将请求发送给upjsp.jsp文件。upjsp.jsp调用了名为UpBean的JavaBean。 程序如下: <jsp:useBean id="TheBean" scope="page" class="UpBean " /> <% TheBean.doUpload(request); %> 下面是UpBean的实现代码: import java.io.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletInputStream; public class UpBean { public void doUpload(HttpServletRequest request) throws IOException { PrintWriter pw = new PrintWriter( new BufferedWriter(new FileWriter("test.txt"))); ServletInputStream in = request.getInputStream(); int i = in.read(); while (i != -1) { pw.print((char) i); i = in.read(); } pw.close(); } } 这个JavaBean把HttpServletRequest对象的表单原始数据写入test.txt文件. 选择上传一个文本或者网页文件。点击“上载”按钮之后,表单就发送给了upjsp.jsp文件,一起发送的还有上传的文件。upjsp.jsp文件不会向浏览器发送任何应答内容,但它会生成一个test.txt文件。打开test.txt文件,我们可以看到上传文件的内容和一些上传的信息了。 -----------------------------7d15340138 Content-Disposition: form-data; name="Author" A. Christie -----------------------------7d15340138 Content-Disposition: form-data; name="Company"Abisco -----------------------------7d15340138 Content-Disposition: form-data; name="Filename"; filename="C:\123data\abisco.html" Content-Type: text/html /*这里是上传的内容*/ 可以看到,HTTP请求体内包含了所有的表单输入,包括上载的文件。这些输入数据的分隔由一个分隔符实现。分隔符由一系列的“-”字符和一个随机数字构成。在上面的例子中,分隔符为“-----------------------------7d15340138”。最后一个分隔符结束请求体,这个分隔符的后面多出两个“-”符号。 对于非文件类型的输入数据,分隔符后面跟着下面这行内容:Content-Disposition: form-data; name=inputName。其中inputName是表单元素的名字。例如:Content-Disposition: form-data; name="Author"。在这行内容的后面,紧跟着两个连续的回车换行符和表单元素值。 而对于文件型输入域,分隔符的后面有两行内容。第一行内容包含输入元素的名字以及上载文件在客户端的完整路径。注意Windows浏览器会设置文件路径,而Unix/Linux以及Mac浏览器只发送文件名字。 SSH整合中文乱码怎么解决不了 hibernate创建oracle问题 用正则 提取 EMAIL 地址 compass中如何像lucene一样设置boosts 求助:jsp+jdbc无法插入mysql 求助!关于DateFormate问题 懂imap的高手讲进 lucene 如何进行模糊匹配过滤 在eclipse中如何编译jsp文件 总结2003,展望2004! 把人整疯的一个关于struts乱码的问题。高手请帮忙。 问大家个关于字符串匹配的问题,在线等,急,立刻给分
用jsp对oracle的clob字段进行操作
作者:未知 更新人:Legume 来源:未知 更新时间:2004.08.24 投稿信箱: tg*ddvip.com
CLOB一般用来存放超大广西,如果是2进制文件一般用BLOB.
假设col2是CLOB:
写操作: String sql = "insert into tb_commendtemp (col1,col2) values('111',?)";
string s = "长文本";
StringBufferInputStream sbin = new StringBufferInputStream(s);
PreparedStatement ps = query.getPreStmt(sql);
ps.setAsciiStream(1,sbin,s.length());
int i = ps.executeUpdate();
ps.close();
sbin.close();
if(i>0) ok;
如果是二进制文件就用FileInputStream写进去 读的时候只要
rs.getAsciiStream();
rs.getUnicodeStream();
rs.getBinaryStream();
看它们的名字就知道是得到什么类型的的数据流了. 如果存放的是二进制文件,比如图形,执行文件,压缩文件最好还是blob保险.
写和读也要用二进制流,
DataInputStrean和DatOutputStream.有时用UNICODE的字符流也能行,但
不保险.如果是文本,用Clob和LONG都行.读和写用
BuffreedReader和PrintWriter更方便.
要想在一个网页上同时显示从程序中推出的文字和图象,这项技术目前在国内
可以值100万.
因为目前浏览器要想同时显示HTML文档和image文档,你到目前在国内还没有
发现,要用到server push技术.你想想一下电子邮件的文档头,是复合型的,把
数据用Base 64编码就可以通过特定的文档类型同时显示文字和图片了.可是浏览器目前还做不到. blob:二进制,如果exe,zip
clob:单字节码,比如一般的文本文件.
nlob:多字节码,如UTF格式的文件. 如果带格式的文件如果WORD,EXECL等如果要保持格式不被破坏,最好以BLOB
方式,它近似于以byte的原始方式存放,缺点当然是操作时效率低(慢). 操作CLOB,别的可以看我上面的写和读的例子,只要注意把
写pstmt.setBinaryStream()改成rs.setAsciiStream();
读pstmt.getBinaryStream()改成rs.getBinaryStream(); 在从文件读成流的时候用Reader而不要用DataInuputStream
http://www.uml.org.cn/sjjm/oracle3js.htm
文件上传原理简单实现
要实现文件上载,我们必须先了解上载文件的HTTP请求。下面这个简单的应用示范了如何上载文件以及把HTTP请求的原始数据写入文件。用文本编辑器查看该文件即可了解请求的格式,在此基础上我们就可以提取出上载文件的名字、文件内容以及原本混合在一起的其他信息。
在这里我们写一个简单的html页面up.html,提供一个表单,用户从这里选择文件并把文件上载到服务器。
<html>
<head>
<title>文件上载</title>
</head>
<body>
<form action="upjsp.jsp" enctype="MULTIPART/FORM-DATA" method=post>
<br />
公司: <input type="text" name="company" />
<br />
选择要上载的文件 <input type="file" name="filename" />
<br />
<input type="submit" value="上载" />
</form>
</body>
</html>
注意,<form>标记有一个enctype属性,属性值是"MULTIPART/FORM-DATA"。还有个type为file的输入框是用来选择上传文件的。
表单的action属性值是upjsp.jsp,这是将请求发送给upjsp.jsp文件。upjsp.jsp调用了名为UpBean的JavaBean。
程序如下:
<jsp:useBean id="TheBean" scope="page" class="UpBean " />
<%
TheBean.doUpload(request);
%>
下面是UpBean的实现代码:
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletInputStream;
public class UpBean {
public void doUpload(HttpServletRequest request) throws
IOException {
PrintWriter pw = new PrintWriter(
new BufferedWriter(new FileWriter("test.txt")));
ServletInputStream in = request.getInputStream();
int i = in.read();
while (i != -1) {
pw.print((char) i);
i = in.read();
}
pw.close();
}
}
这个JavaBean把HttpServletRequest对象的表单原始数据写入test.txt文件.
选择上传一个文本或者网页文件。点击“上载”按钮之后,表单就发送给了upjsp.jsp文件,一起发送的还有上传的文件。upjsp.jsp文件不会向浏览器发送任何应答内容,但它会生成一个test.txt文件。打开test.txt文件,我们可以看到上传文件的内容和一些上传的信息了。
-----------------------------7d15340138
Content-Disposition: form-data; name="Author"
A. Christie
-----------------------------7d15340138
Content-Disposition: form-data; name="Company"Abisco
-----------------------------7d15340138
Content-Disposition: form-data; name="Filename"; filename="C:\123data\abisco.html"
Content-Type: text/html
/*这里是上传的内容*/
可以看到,HTTP请求体内包含了所有的表单输入,包括上载的文件。这些输入数据的分隔由一个分隔符实现。分隔符由一系列的“-”字符和一个随机数字构成。在上面的例子中,分隔符为“-----------------------------7d15340138”。最后一个分隔符结束请求体,这个分隔符的后面多出两个“-”符号。
对于非文件类型的输入数据,分隔符后面跟着下面这行内容:Content-Disposition: form-data; name=inputName。其中inputName是表单元素的名字。例如:Content-Disposition: form-data; name="Author"。在这行内容的后面,紧跟着两个连续的回车换行符和表单元素值。
而对于文件型输入域,分隔符的后面有两行内容。第一行内容包含输入元素的名字以及上载文件在客户端的完整路径。注意Windows浏览器会设置文件路径,而Unix/Linux以及Mac浏览器只发送文件名字。