首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

!关于jsp图片上传和加载的一些重要有关问题!跪求!

2012-01-29 
!!关于jsp图片上传和加载的一些重要问题!!急!!在线等!!跪求!!怎么样在本地的文件夹中选择图片加载到jsp页

!!关于jsp图片上传和加载的一些重要问题!!急!!在线等!!跪求!!
怎么样在本地的文件夹中选择图片加载到jsp页面中?然后怎么样把图片存入数据库(sqlserver2000),还需要在查询的时候查询出这个图片?  
注:是不是需要先把本地图片存入到服务器的临时文件夹下?  
有没有参考的代码,谢谢各位大虾~~~跪求!!!  


[解决办法]
JSP页面
<%@page contentType= "text/html;charset=GBK "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-logic "
prefix= "logic "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-html "
prefix= "html "%>
<%@ taglib uri= "http://jakarta.apache.org/struts/tags-bean "
prefix= "bean "%>
<html>
<script type= "text/javascript ">
function v(){

document.myform.img.src=document.myform.pic.value;
}

</script>
<body>
<form action= "photo.do?p=main " method= "POST " enctype= "multipart/form-data " name= "myform "> <%--
得到本地的图片
--%> <input type= "file " name= "pic " onchange= "v() " >
<img name= "img " src= " " > <%--

显示数据库中的图片
--%> <img name= "abc " src= "photo.do?p=view ">
<input type= "submit " value= "going "/>
</form>
</body>
</html>
Action
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.upload.FormFile;

import form.PhotoForm;

/**
* MyEclipse Struts Creation date: 04-13-2007
*
* XDoclet definition:
*
* @struts.action validate= "true "
*/
public class PhotoAction extends DispatchAction {
/*
* Generated Methods
*/

/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward main(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub

PhotoForm tform = (PhotoForm) form;

FormFile file = tform.getPic();
String name = "ruby ";
HttpSession session = request.getSession();
if (file.getFileSize() > 10000) {

}
// 获取文件名
String filename = file.getFileName();
System.out.println(filename);
int index = filename.lastIndexOf( ". ");
System.out.println(index);
filename = filename.substring(index);
System.out.println(filename);
// 设置图片文件临时存放的路径
// String path = session.getServletContext().getRealPath( "/ ") +


//
// "UploadFile\\ " + name + filename;
String path = "D:/ " + name + filename;
try {
// 读取文件中的数据,获取二进制的数据流
InputStream stream = file.getInputStream();
// 把数据写到指定路径
OutputStream bos = new FileOutputStream(path);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.flush();
bos.close();
stream.close();
} catch (Exception fe) {

}
file.destroy();
PreparedStatement pst = null;
String sql = "insert into picture(id,pic) values(?,?) ";
String id = " ";
int a;
// 存储图片到表中
try {
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test ";
Connection m_conn = DriverManager.getConnection(url, "sa ", "1234 ");


//查询ID
Statement s=m_conn.createStatement();
String str1= "select max(id) from picture ";
ResultSet rs=s.executeQuery(str1);
while(rs.next())
{
id=rs.getString(1);
}
if(id==null){
id= "100 ";
a=Integer.parseInt(id);
}else{
a=Integer.parseInt(id)+1;
}
System.out.println(a);
pst = m_conn.prepareStatement(sql);

pst.setInt(1, a);

File filea = new File(path);
FileInputStream in = new FileInputStream(filea);
pst.setBinaryStream(2, in, in.available());

if (filea.exists()) {
filea.delete();
System.out.println( "删除临时文件 ");
}

pst.execute();
m_conn.commit();

} catch (IOException e) {
System.out.println( "文件读取失败. ");
e.printStackTrace();
} catch (Exception e) {
System.out.println( "插入记录失败。。。 ");
e.printStackTrace();

}



return mapping.findForward(null);

}


// 从表中得到照片到页面
public ActionForward view(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {




PreparedStatement pst = null;
Connection m_conn=null;
try {
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test ";
m_conn = DriverManager.getConnection(url, "sa ", "1234 ");
String sql = "select pic from picture where id= " + 4;
pst = m_conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
if (rs.next()) {
InputStream in = rs.getBinaryStream( "pic ");
int bytesRead = 0;
byte[] buffer = new byte[8192];
//设置照片格式.
response.setContentType( "image/gif ");
//返回ServletOutputStream 对象.
OutputStream outs = response.getOutputStream();
while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
outs.write(buffer, 0, bytesRead);
}
outs.flush();
in.close();
rs.close();
} else {
rs.close();


}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pst.close();
m_conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;



}
}
FormBean
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

/**
* MyEclipse Struts
* Creation date: 04-13-2007
*
* XDoclet definition:
* @struts.form name= "photoForm "
*/
public class PhotoForm extends ActionForm {
/*
* Generated Methods
*/
private FormFile pic;

public FormFile getPic() {
return pic;
}

public void setPic(FormFile pic) {
this.pic = pic;
}

/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}

/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
}

热点排行