高手们,请你帮帮我吧!我最近在做一个个站,遇到了这样一个问题,用后台上传一些文本文件和图片,请问怎么上传它们,并把它们从mysql数据库创建的表中读取出来,并显示在jsp页面中啊!我说的是不用jspSmartUpload组件,因为申请那个空间不支持.
第二个问题,怎样在jsp中操作mysql备份.
若有实例,不胜感激!!!!!
搞定就给100分.
第二个问题,怎样在jsp中操作mysql备份.
若有实例,不胜感激!!!!!
搞定就给100分.
解决方案 »
- 关于hibernate用代码进行建表(在线等,我把我剩余的50分全压在上面了,明天老师检查)
- 一个jsp页面可以同时加载另外两个页面吗?
- lucene如何实现同一个值,在不同字段间的比较查询,或同一个字段的比较查询!
- 自定义表单什么回事?怎么做?
- 我用java开发一个B/S的系统内容要求大量的生成WORD报表,请问开源中JAVA用哪个报表为流行?
- 我的java代码应该怎么修改,我想取BH的最大值加1然后作为id
- 文件下载的servlet 不能支持 汉字文件名
- 一个好象很简单的问题??
- FAQit问题解决,请 hhaibin(小海) 到http://www.csdn.net/expert/topicview1.asp 取分!!谢谢。
- java poi Excel大数据量(千万级)导入如何提高速度
- sqlserver+jdbc连接的错误
- jsp 如何获取天气,股票,航班 等信息??
+++++++++++++
不可能的,jspSmartUpload不就几个CLASS文件吗,怎么可以不支持呢?如果这个不支持那么就也不用做上传了,或者换空间吧,哈哈
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java"%>
<%@ page import="java.sql.*" %>
<%@ page import="com.dd.database.DatabaseService"%>
<br>
<%
try
{
String sessionID=session.getId();
DatabaseService pobjDatabaseService = new DatabaseService();
//实例化上载bean
com.jspsmart.upload.SmartUpload mySmartUpload = new com.jspsmart.upload.SmartUpload();
//初始化
mySmartUpload.initialize(pageContext);
//设置上载的最大值
mySmartUpload.setMaxFileSize(500*1024*1024);
//上载文件
mySmartUpload.upload();
//循环取得所有上载的文件
for (int i=0;i<mySmartUpload.getFiles().getCount();i++)
{
//取得上载的文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
if (!myFile.isMissing())
{
//取得文件全名
String myFileName=myFile.getFileName();
//取得不带后缀的文件名
String suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
//取得后缀名
String ext= mySmartUpload.getFiles().getFile(0).getFileExt();
//取得文件的大小
int fileSize = myFile.getSize();
//保存路径
//String path=getServletContext().getRealPath("/")+"upload/upfile/";
String trace=getServletContext().getRealPath("/")+"upfile/"+myFileName;
//取得别的参数s
String explain=(String)mySmartUpload.getRequest().getParameter("text");
String send=(String)mySmartUpload.getRequest().getParameter("send");
//将文件保存在服务器端
myFile.saveAs(trace,com.jspsmart.upload.File.SAVEAS_PHYSICAL);
//将上载的文件保存到数据库中
//将文件读到流中
java.io.File file = new java.io.File(trace);
java.io.FileInputStream fis = new java.io.FileInputStream(file);
//下面这一段就是上传文件到数据库
String mStrSql=null;
ResultSet mobjResult=null;
PreparedStatement mobjPrestmt=null;
mStrSql="insert into c_update(name,size,MarkBody,randomname,sessionid) values (?,?,?,?,?)";
java.util.Random pobjRandom = new java.util.Random(new java.util.Date().getTime());
long plogRandom = pobjRandom.nextLong();
String mstrRandomName = String.valueOf(plogRandom);
//随机名
mstrRandomName = mstrRandomName + "." + ext;
mobjPrestmt=pobjDatabaseService.getPreparedStatement(mStrSql);
mobjPrestmt.setString(1, suffix);
mobjPrestmt.setInt(2, fileSize);
mobjPrestmt.setBinaryStream(3,fis,(int)file.length());
mobjPrestmt.setString(4,mstrRandomName);
mobjPrestmt.setString(5,sessionID);
mobjPrestmt.executeUpdate();
response.sendRedirect("csxx.jsp");
}
else
{
out.println(("上载失败!").toString());
}
}
}
catch(Exception er)
{
out.println("<br>");
out.println(er.getMessage());
}
%>
下面这个文件就是从数据库读出文件并显示在页面上并且点击就能下载了
<%@ page language="java"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="com.wz.database.DatabaseService"%>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<link href="../css/text.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="25" width="10%"><a href="uploadpicture.jsp" class="liao1">附加图片</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<%
try
{
//无后辍文件名
String mstrfileName = null;
//后辍名
String mstrBackName = null;
String sessionID=session.getId();
int pintid = 0;
int bytesum=0;
int byteread=0;
DatabaseService pobjDatabaseService = new DatabaseService();
Statement pobjStmt = pobjDatabaseService.createStatement();
String pstrsql = "SELECT * FROM c_update where sessionid='"+sessionID+"' and csxxid is null";
ResultSet result = pobjStmt.executeQuery(pstrsql);
if(result!=null)
{
%>
<td height="25" width="10%">附加的图片:</td>
<input type="hidden" name="fi">
<%
while(result.next())
{ //后辍名
mstrBackName = result.getString("randomname");
mstrfileName = result.getString("name");
pintid = result.getInt("id");
InputStream inStream=result.getBinaryStream("MarkBody");
String aa=getServletContext().getRealPath("/")+"upload/showFile/";
FileOutputStream fs=new FileOutputStream(aa+mstrBackName);
if(mstrBackName!=null&&mstrBackName!="")
{
byte[] buffer =new byte[1444];
while ((byteread=inStream.read(buffer))!=-1)
{
bytesum += byteread;
fs.write(buffer,0,byteread);
}
%>
<td width="10%" height="25">
<%
String str;
str = "<img src='showFile/"+mstrBackName+"'";
str = str + "width=39 height=42 border=0>";
out.println(str);
out.println(pintid);
/*
String str1;
str1 = "<a href='showFile/"+mstrBackName+"'";
str1 = str1 + "target='_blank'>";
str1 = str1 + mstrfileName;
str1 = str1 + "</a>";
out.println(str1 + "<br>");
*/
%>
</td><td width="50%" height="25">
</td><td width="50%" height="25"><input type="text" name="kkk" value="<%=pintid%>">
</td>
</tr>
<%
}
}
}
}
catch(Exception er)
{
out.println(er.toString());
}
%>
</table>
</td>
</tr>
</table>
</body>
</html>
这样编写,可能会出现这样的问题,网络浏览速度要变慢.只要相关信息不是很多,我想,这个不是什么大问题.
为方便了我们删除数据库中的文件和图片,而不用再去写一个页面来删除相关信息,和读取方便,这样做值得
我邮箱[email protected]
<table width="80%" height="200" border="2" align="center" cellpadding="1" cellspacing="2">
<tr>
<td width="50%">请输入数据库用户名:
<input type="text" name="username" /></td>
<td>请输入密码:
<input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="2"><div align="center">请输入您要备份的数据库名称:
<input type="text" name="databasename" />
</div></td>
</tr>
<tr>
<td colspan="2"><div align="center">请输入备份后的文件名:
<input type="text" name="fname" />
</div></td>
</tr>
<tr>
<td colspan="2"><table width="40%" height="50" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center">
<input type="submit" name="Submit" value=" 提交" />
</div></td>
<td><div align="center">
<input type="reset" name="reset" value=" 重置" />
</div></td>
</tr>
</table></td>
</tr>
</table>处理页面:
<%
try { String backupFile =request.getParameter("fname");
String driver = "com.mysql.jdbc.Driver";
String dbName=request.getParameter("databasename");
String userName=request.getParameter("username");
String userPasswd=request.getParameter("password");
String url = "jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd; Class.forName(driver);
Connection conn = DriverManager.getConnection(url); // Get tables
DatabaseMetaData dmd = conn.getMetaData();
ResultSet rs = dmd.getTables(null, null, "%", null);
ArrayList<String> tables = new ArrayList<String>();
while (rs.next()) {
tables.add(rs.getString(3));
}
rs.close(); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(backupFile), "UTF-8"); ResultSetMetaData rsmd = null;
Statement stmt = conn.createStatement();
for (String table : tables) {
rs = stmt.executeQuery("SHOW CREATE TABLE " + table);
rsmd = rs.getMetaData();
while (rs.next()) {
/*
* mysql> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
* Table: t
* Create Table: CREATE TABLE t (
* id int(11) default NULL auto_increment,
* s char(60) default NULL,
* PRIMARY KEY (id)
* ) TYPE=MyISAM
*/
// JDBC is 1-based, Java is not !?
// osw.append(rs.getString(2) + "\n\n");
}
rs.close(); out.println("Dumping data for table " + table + "...<br />"); rs = stmt.executeQuery("SELECT * FROM " + table);
rsmd = rs.getMetaData();
while (rs.next()) {
osw.append("INSERT INTO " + table + " VALUES(");
// JDBC is 1-based, Java is not !?
for (int col = 1; col <= rsmd.getColumnCount(); col++) {
osw.append("'");
if (rs.getString(col) == null)
osw.append("");
else
osw.append(rs.getString(col));
if (col == rsmd.getColumnCount())
osw.append("'");
else
osw.append("', ");
}
osw.append(");\n");
}
osw.append("\n");
rs.close();
}
stmt.close();
osw.flush();
osw.close();
out.println("数据库备份成功!");
conn.close();
} catch (Exception e) {
response.setStatus(200);
e.printStackTrace();
}
out.println("<p><h3>结束</h3></p>");
%>