高手们,请你帮帮我吧!我最近在做一个个站,遇到了这样一个问题,用后台上传一些文本文件和图片,请问怎么上传它们,并把它们从mysql数据库创建的表中读取出来,并显示在jsp页面中啊!我说的是不用jspSmartUpload组件,因为申请那个空间不支持.
第二个问题,怎样在jsp中操作mysql备份.
 若有实例,不胜感激!!!!!
 搞定就给100分.

解决方案 »

  1.   

    jspSmartUpload组件,因为申请那个空间不支持
    +++++++++++++
    不可能的,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());
    }
    %>    
    下面这个文件就是从数据库读出文件并显示在页面上并且点击就能下载了
      

  2.   

    <%@ page contentType="text/html; charset=gb2312"%>
    <%@ 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>
      

  3.   

    还用什么SMARTUPLOAD啊?多麻烦!用Struts吧,里面的就写写一个<html:file />就OK了!超级简单!
      

  4.   

    谢谢各位高手的指点,我刚才的帖子发错了,不是不支持是没有jspSmartUpload组件.
      

  5.   

    使用blob字段,把文件保 在该字段中
      

  6.   

    本人在写一个网站的后台,把文件和图片....等相内容保存在数据库中,方便读取,就不用在数据库中标明一个字段用来保存文件和图片等相关的信息的PAHT了!这样非常方便,至于楼上有位朋友说,数据库要多大的问题,那个我们不管,我申请的空间是1000mb的,100MB web ,900Mb 的databease.
    这样编写,可能会出现这样的问题,网络浏览速度要变慢.只要相关信息不是很多,我想,这个不是什么大问题.
    为方便了我们删除数据库中的文件和图片,而不用再去写一个页面来删除相关信息,和读取方便,这样做值得
      

  7.   

    我想请问一下,如果把文件上传到Access数据库并下载要怎么做啊?请哪位大仙指点一下,谢谢啦!
      

  8.   

    有代码给发一份啊,我现在急用~谢谢了。
    我邮箱[email protected]
      

  9.   

    在jsp中备份数据库
    <table width="80%" height="200" border="2" align="center" cellpadding="1" cellspacing="2">
                <tr>
                  <td width="50%">&#35831;&#36755;&#20837;&#25968;&#25454;&#24211;&#29992;&#25143;&#21517;&#65306;
                    <input type="text" name="username" /></td>
                  <td>&#35831;&#36755;&#20837;&#23494;&#30721;:
                  <input type="password" name="password" /></td>
                </tr>
                <tr>
                  <td colspan="2"><div align="center">&#35831;&#36755;&#20837;&#24744;&#35201;&#22791;&#20221;&#30340;&#25968;&#25454;&#24211;&#21517;&#31216;:
                      <input type="text" name="databasename" />
                  </div></td>
                  </tr>
                <tr>
                  <td colspan="2"><div align="center">&#35831;&#36755;&#20837;&#22791;&#20221;&#21518;&#30340;&#25991;&#20214;&#21517;:
                      <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=" &#25552;&#20132;" />
                      </div></td>
                      <td><div align="center">
                        <input type="reset" name="reset" value=" &#37325;&#32622;" />
                      </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("&#25968;&#25454;&#24211;&#22791;&#20221;&#25104;&#21151;&#65281;");
     conn.close();
    } catch (Exception e) {
        response.setStatus(200);
        e.printStackTrace();
    }
    out.println("<p><h3>&#32467;&#26463;</h3></p>");
    %>