jsp中图片的上传与显示

darcymei 2004-08-17 08:43:06
怎么实现将用户本地的图片上传到服务器 存在数据库中 并在别的web中显示。
各位有示例代码否?
或者能说个大致过程 给个伪代码也可以。
不胜感激
...全文
520 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishiwei1104998605 2010-06-25
  • 打赏
  • 举报
回复
bucuo
lishiwei1104998605 2010-06-25
  • 打赏
  • 举报
回复
bucuo
rainboy20024 2004-10-10
  • 打赏
  • 举报
回复
xiexie
darcymei 2004-08-19
  • 打赏
  • 举报
回复
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();
}
}
还有 请教下 这里的ServletOutputStream sout 可不可以指定位置和大小
darcymei 2004-08-19
  • 打赏
  • 举报
回复
to tianlei521(冰糖葫芦)
FileInputStream str=new FileInputStream(filename)
这不是创建一个本地 filename的FileInputStream
如果客户和服务器不在一台机器上肯定不行啊
tianlei521 2004-08-18
  • 打赏
  • 举报
回复
for ms sqlserver2000数据库!
1:选择文件的页面
<HTML>
<HEAD>
<TITLE>Image File </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>
<FORM METHOD=POST ACTION="save_image.jsp">
<INPUT TYPE="text" NAME="content"><BR>
<INPUT TYPE="file" NAME="image"><BR>
<INPUT TYPE="submit"></FORM>
<BODY>
</BODY>
</HTML>
2:处理上传到数据库的当jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<jsp:useBean id="gb" scope="page" class="jsjh.utility.util" />
<html>
<body>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://76.28.144.188:1433;DatabaseName=work_log";
String user="sa";
String password="123";
Connection conn= DriverManager.getConnection(url,user,password);
String content=gb.ToGb(request.getParameter("content"));
String filename=gb.ToGb(request.getParameter("image"));
FileInputStream str=new FileInputStream(filename);
String sql="insert into image(id,content,image) values(22,?,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,content);
pstmt.setBinaryStream(2,str,str.available());
pstmt.execute();
out.println("Success,You Have Insert an Image Successfully");
%>
注:此处用到的当bean是汉字的处理
3:显示数据库中的图片
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<html>
<body>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://76.28.144.188:1433;DatabaseName=work_log";
String user="sa";
String password="123";
Connection conn= DriverManager.getConnection(url,user,password);
String sql = "select image from image where id=1";
Statement stmt=null;
ResultSet rs=null;
try
{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException e){}
try {
while(rs.next()) {
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();
}
}
catch(Exception e)
{
System.out.println(e);
}
%>
</body>
</html>
sunwei007 2004-08-18
  • 打赏
  • 举报
回复
jspSmartUpload.zip网上应该有的下的
sunwei007 2004-08-18
  • 打赏
  • 举报
回复
处理页面:
<%@ page language="java" import="com.jspsmart.upload.*"%>
<%
if(session.getAttribute("NAME")==null || session.getAttribute("NAME").toString().equals("")){
%>
<script>
window.alert("您未登入!!");
location="login.htm";
</script>
<%
}
%>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />

<HTML>
<BODY BGCOLOR="white">

<H1>hoodle-jsp</H1>
<HR>

<%

int count=0;

mySmartUpload.initialize(pageContext);


mySmartUpload.upload();

String content = mySmartUpload.getRequest().getParameter("text1");

out.println(content);

for (int i=0;i<mySmartUpload.getFiles().getCount();i++){com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);

if (!myFile.isMissing()) {
myFile.saveAs("D://web/index/upload/" + myFile.getFileName());
out.println("FieldName = " + myFile.getFieldName() + "<BR>");
out.println("Size = " + myFile.getSize() + "<BR>");
out.println("FileName = " + myFile.getFileName() + "<BR>");
out.println("FileExt = " + myFile.getFileExt() + "<BR>");
out.println("FilePathName = " + myFile.getFilePathName() + "<BR>");
out.println("ContentType = " + myFile.getContentType() + "<BR>");
out.println("ContentDisp = " + myFile.getContentDisp() + "<BR>");
out.println("TypeMIME = " + myFile.getTypeMIME() + "<BR>");
out.println("SubTypeMIME = " + myFile.getSubTypeMIME() + "<BR>");

count ++;

}

}
out.println("<BR>" + mySmartUpload.getFiles().getCount() + " files could be uploaded.<BR>");
out.println(count + " file(s) uploaded.");
%>
</BODY>
</HTML>
sunwei007 2004-08-18
  • 打赏
  • 举报
回复
去下个jspSmartUpload.zip。
然后用他进行上传:
提交页面:<%@ page contentType="text/html;charset=gb2312"%>
<%
if(session.getAttribute("NAME")==null || session.getAttribute("NAME").toString().equals("")){
%>
<script>
window.alert("您未登入!!");
location="login.htm";
</script>
<%
}
%>
<html>
<head>
<title>jspupload</title>
</head>
<body background="../img/back.gif">
<center>
<font size=2 color=blue><b>文件上传</b></font>

<FORM METHOD="POST" ACTION="admin_upb.jsp" ENCTYPE="multipart/form-data">
主题:<input type="text" name="text1" ><br>
        
文件:<INPUT TYPE="FILE" NAME="FILE1" SIZE="20"><BR>
<INPUT type=submit value=上传 name=ok>
</form>
</center>
</body>
</html>
darcymei 2004-08-18
  • 打赏
  • 举报
回复
谢谢HITZXL(编程要厚道)
但现在spsmart.com关闭了
我下不到对应的jar包
能不能mail我一份mmlymlymly@hotmail.com或mmlymlymly@yahoo.com.cn
谢了
HITZXL 2004-08-17
  • 打赏
  • 举报
回复
要将图片上传到数据库,请看下面:代替上面的Servlet File (you can do it yourself)
首先要在数据库表中建立blob类型字段
然后看下面文章
java语言操作Oracle数据库中的CLOB数据类型 xuhb [收藏]
关键字 CLOB
出处

有关oracle字段类型的相关信息可以查阅oracle技术网。下面摘抄一些有关blob.clob等类型的说明。又便于大家的了解。
字段类型:blob,clob,nclob
说明:三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。

我们所操作的clobtest_table中属性是(字符型id,CLOB型picstr),目前我们假设一个大的字符对象str已经包含了我们需要存入picstr字段的数据。而且connection对象conn已经建立。以下的例子程序也因为不想占用太多的空间,所以对抛出异常没有写。大家参考一下api doc。就可以知道该抛出什么异常了,此处仅仅告诉大家如何去写。

代码:


(1)对数据库clob型执行插入操作
*************************************************

java.sql.PreparedStatement pstmt = null;
ResultSet rs = null;
String query = "";

conn.setAutoCommit(false);
query = "insert into clobtest_table(id,picstr) values(?,empty_clob())";
java.sql.PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1,"001");
pstmt.executeUpdate();
pstmt = null
query = "select picstr from clobtest_table where id = '001' for update";
pstmt = con.prepareStatement(query)
rs= pstmt.executeQuery();

oracle.sql.CLOB clobtt = null;
if(rs.next()){
clobtt = (oracle.sql.CLOB)rs.getClob(1);
}
Writer wr = clobtt.getCharacterOutputStream();
wr.write(strtmp);
wr.flush();
wr.close();
rs.close();
con.commit();



(2)通过sql/plus查询是否已经成功插入数据库
*************************************************

PL/SQL的包DBMS_LOB来处理LOB数据。察看刚才的插入是否成功。使用DBMS_LOB包的getlength这个procedure来检测是否已经将str存入到picstr字段中了。如:

SQL> select dbms_lob.getlength(picstr) from clobtest_table;


(3)对数据库clob型执行读取操作
*************************************************

读取相对插入就很简单了。基本步骤和一半的取数据库数据没有太大的差别。
String description = ""
query = "select picstr from clobtest_table where id = '001'";
pstmt = con.prepareStatement(query);
ResultSet result = pstmt.executeQuery();
if(result.next()){
oracle.jdbc.driver.OracleResultSet ors =
(oracle.jdbc.driver.OracleResultSet)result;
oracle.sql.CLOB clobtmp = (oracle.sql.CLOB) ors.getClob(1);

if(clobtmp==null || clobtmp.length()==0){
System.out.println("======CLOB对象为空 ");
description = "";
}else{
description=clobtmp.getSubString((long)1,(int)clobtmp.length());
System.out.println("======字符串形式 "+description);
}
}







HITZXL 2004-08-17
  • 打赏
  • 举报
回复
上面这个不太适合
看下面这个
使用JSP/Servlet上载文件
(加入日期:2002-1-28 点击数:3025)
【对此文发表评论】 【编程爱好者论坛】 【保存文章至硬盘】 【打印文章】
Borland开发讨论区 微软开发讨论区 C/C++讨论区 新手入门专区


使用 JSP/ Servlet上载文件正成为一项常用的任务。以下是一个简单的例程,使用了jspsmart的一个免费的组件。你可以在JSPSMART站点进行下载。

1. Html File
<html>
<body>
<script LANGUAGE="javascript" SRC="JSFunction.js">
</script>
<script language="JavaScript">
<!--
function checkForm(){

if (document.uploadform.adsImage.value==""){
alert("You must choose what image file to upload!");
return false;
}
document.uploadform.submit();
}
function cancelUpload(){
window.close();
window.opener.focus();
}
//-->
</script>
<form name="uploadform" method="post"
action="uploadImage.jsp" ENCTYPE="multipart/form-data"
target=_self>
<center>
<table border="1" width="65%">
<tr>
<td colspan=2 nowrap align=center>广告图片上载</td>

</tr>
<tr>
<td width="15%" nowrap >广告图片:</td>
<td width="50%" nowrap><input type="file"
name="adsImage" size="20"></td>
</tr>
<tr>
<td align="center" colspan=2 >
<input type="button" value="upload" onclick="return
checkForm();" >
   
<input type="button" value="Cancel" onclick="return
cancelUpload();">
</td>

</tr>
</form>
</table>
<!--
<a href="Javascript:window.close();">close this window</a>
-->
<script language="JavaScript">
<!--
this.focus();
//-->
</script>
</body>

2. JSP File
<%@ page language="java" import="com.jspsmart.upload.*,
java.sql.*,java.util.* "%>
<%-- use SmartUpload bean --%>
<jsp:useBean id="mySmartUpload" scope="page"
class="com.jspsmart.upload.SmartUpload" />

<%

//Initialization
mySmartUpload.init(config);
mySmartUpload.service(request,response);

//Set Restriction
mySmartUpload.setAllowedFilesList("gif,bmp,jpeg,jpg");
mySmartUpload.setTotalMaxFileSize(51200);



// Upload
try{
mySmartUpload.upload();
}
catch(Exception e){
out.println("<font color=red>Upload File Fail!</font>
<a href=
"JavaScript:window.history.back();">back</a><br>");
out.println("<UI>Notes:</UI>");

out.println("<UL>You must set correct File
Name.</UL>");
out.println("<UL>You file size must be less than
50K.</UL>");
out.println("<UL>You can only upload .Gif .jpeg .jpg and
.bmp files.</UL>");

return;

}
//save file to disk
mySmartUpload.getFiles().getFile(0).saveAs("/" +
"FileName");

 

%>



3. Servlet File (you can do it yourself)
HITZXL 2004-08-17
  • 打赏
  • 举报
回复
用JSP编写文件上传
(加入日期:2001-11-20 点击数:3687)
【对此文发表评论】 【编程爱好者论坛】 【保存文章至硬盘】 【打印文章】
Borland开发讨论区 微软开发讨论区 C/C++讨论区 新手入门专区


  如过你用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易。下面的例子只是一个简版
package yuanyifileup;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.PageContext;

public class yuanyifileup
{
private ServletRequest request;
private ServletResponse response;
private ServletConfig config;
ServletInputStream DATA;
int FormSize;
File f1;
FileOutputStream os;
DataInputStream is;
String filename;
byte[] b;
byte t;
boolean flag=false;
public yuanyifileup()
{ }
public void initialize(ServletConfig config,HttpServletRequest request,HttpServletResponse response) throws IOException
{
this.request=request;
this.response=response;
this.config=config;
DATA = request.getInputStream();
FormSize=request.getContentLength();
}
public void initialize(PageContext pageContext) throws IOException
{
request=pageContext.getRequest();
response=pageContext.getResponse();
config=pageContext.getServletConfig();
DATA = request.getInputStream();
FormSize=request.getContentLength();
}
public boolean setFilename(String s)
{
try
{
File f1=new File(s);
os=new FileOutputStream(f1);
}
catch(IOException e)
{return(false);}
return(true);
}
public void getByte()
{
int i=0;
try
{
is=new DataInputStream(DATA);
b=new byte[FormSize];

while (true)
{
try
{
t=is.readByte();
b[i]=t;
i++;
}
catch(EOFException e)
{ break;}
}
is.close();}
catch(IOException e)
{}
}

public boolean save()
{
int i=0,start1=0,start2=0;
String temp="";
if (!flag)
{
getByte();
flag=true;
}
try
{
temp=new String(b,"ISO8859_1");
}
catch(UnsupportedEncodingException e)
{return(false);}

start1=temp.indexOf("image/");
temp=temp.substring(start1);

start1=temp.indexOf("

");

temp=temp.substring(start1+4);
start2=temp.indexOf(";
");
if (start2!=-1)
{
temp=temp.substring(0,start2);
}
try
{
byte[] img=temp.getBytes("ISO8859_1");
for (i=0;i<img.length;i++)
{ os.write(img[i]); }
os.close();
}
catch(IOException e)
{return(false);}

return(true);

}
如果有不明白的发E-Mail:yymailbox@263.net

xuyang821225 2004-08-17
  • 打赏
  • 举报
回复
数据库中存图片的名称和URL 在通过这两个从数据库中读出图片
朋友别哭 2004-08-17
  • 打赏
  • 举报
回复
up

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧