利用jspsmartupload和数据库进行图文信息的发布和管理

来源:互联网 发布:淘宝网手机货源 编辑:程序博客网 时间:2024/05/01 22:39

    在做web开发的时候,有时候我们需要利用数据库对一些图文信息进行处理。对纯文字的信息,可以方便的利用数据库进行读取操作,但是如果想在所存取的文字中插入图片,将图片存入数据库是一种思路。下面介绍一种上传图片到服务器文件夹,但是只在数据库中存储图片路径,网页读取数据库路径即可完成图文信息的显示的方法。

   

    首先,需要下载smartupload包,这个百度找下就可以了。将jar包放进WEB-INF下面的lib文件夹中。

    再者,页面的编码格式需要是GBK格式的。<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

   

  <form action="../addNewsServlet" method="post" enctype="multipart/form-data">  //使用smartupload进行文件的上传操作必须将form的method设置为post方式,并将数据封装enctype="multipart/form-data" 是必须的。                  <table border="5"align="center"width="70%" bgcolor="#cccfff">   //以下textarea放入所需要的文字内容,而一个不可见的输入text框是存放随机生成的文件名,方便其他页面的读取。    <tr>     <td width="80" align="center">内容</td><pre name="code" class="html">                         <input type="text"  style="visibility: hidden;" name="randomName" id="randomName">                         //<pre></pre>标签可以使得数据保留空格,回车等字符,使得存入数据库或者其他页面显示的时候不会格式出现问题。
 <td><pre><textarea cols="100" rows="20" id="newsContent" name="newsContent"></textarea></pre></td> </tr> <tr> <td width="80" align="center">选择上传图片</td> <td>
//一个输入文件框。
 <input type="file" name="imgUpload" id="imgUpload">
//这个按钮利用js代码将图片以网页标签的格式插入到文本中,js代码见下面。
 <input type="button" value="插入图片" onclick="insertImg()"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="submit" value="确定">        <input type="reset" name="reset" value="清空"> </td> </tr> </table> <%
//此处获取系统的纳秒级时间作为文件名。
 String nameNum = String.valueOf(System.nanoTime()); %> </form>


<script type="text/javascript">  //将文件路径添加至文本框里面,请注意,此时并没用实际文件,提交后在servlet中将将图片传地址设定的文件夹中。  function insertImg(){  var fileinput = <%=nameNum %>+".jpg";      var filePath = '<br/><img alt="" src="../upload/'+fileinput+'" width="90%"></img><br/>';      var nContent = document.getElementById("newsContent").value;      nContent = nContent+filePath;      alert("添加图片成功,请继续操作!");    document.getElementById("newsContent").value=nContent;    document.getElementById("randomName").value=<%=nameNum %>;  }  </script>

    接下来,我们需要在servlet中进行上传文件和写入数据库的操作,写入数据库此处不再赘述,只说明上传图片的方法及对编码的处理。当然你也可以在jsp文件中进行相关操作。

//将页面编码为GBK防止文件名乱码request.setCharacterEncoding("GBK");//建立smartupload对象SmartUpload up = new SmartUpload();    up.initialize(getServletConfig(),request,response);    long file_size_max = 1024*1024;            try {    //设置允许的文件格式,此处只允许jpg格式        up.setAllowedFilesList("jpg");        //设置允许的文件大小        up.setMaxFileSize(file_size_max);        //上传文件        up.upload();        //获取上传的文件,如果上传的文件为多个,那个只需要遍历获取就可以了。        File myFile = up.getFiles().getFile(0);        //此处获取表单中生成的随机文件名作为要存储的文件名。注意由于form被封装使用request.getParameter无法获取表单数据。另外如果表单数据的中文字符为奇数个的时候,GBK向UTF-8转换会出现乱码        //因为GBK和UTF-8的编码方式是不一样的,可以利用下面你的方式进行转换。        String randomName1 = new String(up.getRequest().getParameter("randomName").getBytes("UTF-8"),"iso-8859-1");String randomName = new String(randomName1.getBytes("iso-8859-1"),"UTF-8") + ".jpg";//保证服务器的根目录下有upload文件夹,可根据需要自己更改路径。        myFile.saveAs("/upload/"+randomName);    } catch (Exception e) {    e.printStackTrace();    }

    对其他表单数据的读取此处也不再赘述。利用这种方式,将图片上传到服务器文件夹,在数据库中只存储<img/>标签格式的图片表达方式,当输出到jsp页面的时候可直接显示图文信息。


   


0 0
原创粉丝点击