jsp上传图片生成缩略图并将数据信息添加到数据库(转)

来源:互联网 发布:mysql union all效率 编辑:程序博客网 时间:2024/06/10 18:09

上传页面:

<form action="uppicsuolue.jsp" method="post" enctype="multipart/form-data" name="anliForm" id="anliForm">
     <input type="hidden" name="comId" value="<%=comid%>">
     <table width="100%" border="0">
       <tr>
         <td>发布者:</td>
         <td><input name="comName" type="text" id="comName" readonly="readonly" value="<%=comName%>"/></td>
       </tr>
       <tr>
         <td>标题:</td>
         <td><input name="anliTitle" type="text" id="anliTitle" /></td>
       </tr>

       <tr>
         <td>作品类别:</td>
         <td><select name="anliProType" id="anliProType">
             <SelectBean:SelectBean idNum="0" tName="list_itemproducttype"></SelectBean:SelectBean>
         </select></td>
       </tr>
       <tr>
         <td>作品图片:</td>
         <td><input name="file" type="file" size="30" /></td>
       </tr>
       <tr>
         <td>内容</td>
         <td><textarea name="anliContent" cols="60" rows="10"></textarea></td>
       </tr>
       <tr>
         <td>&nbsp;</td>
         <td><input type="submit" name="Submit" value="发布" /></td>
       </tr>

     </table>
</form>

处理页面:

<%@ page contentType="text/html;charset=gb2312" language="java" import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,
java.sql.*,com.jspsmart.upload.*,java.util.*,com.slei.util.*,com.slei.combean.*"%>
<%
SmartUpload mySmartUpload =new SmartUpload();
long file_size_max=1000000;
String fileName2="",ext="",testvar="";
String url="com/anlipic/";                                               //应保证在根目录中有此目录的存在
mySmartUpload.initialize(pageContext);                                   //初始化
try {
mySmartUpload.setAllowedFilesList("jpg,gif");                          //只允许上载此类文件

mySmartUpload.upload();                                                //上载文件
} catch (Exception e){
%>
           <SCRIPT language=javascript>
               alert("只允许上传.jpg和.gif类型图片文件");
               window.location='item_anli.jsp';
           </script>
<%
}
try{
       com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
       if (myFile.isMissing()){%>
          <SCRIPT language=javascript>
             alert("请先选择要上传的文件");
             window.location='asdf.jsp';
          </script>
       <%}
       else{
       //String myFileName=myFile.getFileName();                            //取得上载的文件的文件名
       ext= myFile.getFileExt();                                            //取得后缀名
       int file_size=myFile.getSize();                                      //取得文件的大小
       String saveurl="";
       if(file_size<file_size_max){

       Calendar calendar = Calendar.getInstance();
       String filename = String.valueOf(calendar.getTimeInMillis());        //更改文件名,取得当前上传时间的毫秒数值
       saveurl=request.getRealPath("/")+url;
       saveurl+=filename+"."+ext;                                           //保存路径
       System.out.println(saveurl);
       myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL);

       //*****************************************************************上传完成,开始生成缩略图
       java.io.File file = new java.io.File(saveurl);                       //读入刚才上传的文件
       String newurl=request.getRealPath("/")+url+filename+"_min."+ext;     //新的缩略图保存地址
       Image src = javax.imageio.ImageIO.read(file);                        //构造Image对象
       float tagsize=200;
       int old_w=src.getWidth(null);                                        //得到源图宽
       int old_h=src.getHeight(null);
       int new_w=0;
       int new_h=0;                                                         //得到源图长
       int tempsize;
       float tempdouble;
       if(old_w>old_h){
           tempdouble=old_w/tagsize;
       }else{
           tempdouble=old_h/tagsize;
       }
       new_w=Math.round(old_w/tempdouble);
       new_h=Math.round(old_h/tempdouble);                                  //计算新图长宽
       BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
       tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);               //绘制缩小后的图
       FileOutputStream newimage=new FileOutputStream(newurl);              //输出到文件流
       JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
       encoder.encode(tag);                                                 //近JPEG编码
       newimage.close();
       //*******************************************************************数据插入数据库
       Format format=new Format();
       ComBean cbean=new ComBean();
       String pic1=url+filename+ext;
       String pic2=url+filename+"_min."+ext;
       String anliProType=mySmartUpload.getRequest().getParameter("anliProType");
       String anliTitle=mySmartUpload.getRequest().getParameter("anliTitle");
       String comId=mySmartUpload.getRequest().getParameter("comId");
       String comName=mySmartUpload.getRequest().getParameter("comName");
       String anliContent=mySmartUpload.getRequest().getParameter("anliContent");
       String anliId=comId+String.valueOf(calendar.getTimeInMillis());

       String insertSql="insert into item_anli(anliId,comId,comName,anliTitle,anliProType,pic1,pic2,anliContent,upTimes)values('"+anliId+"','"+comId+"','"+comName+"','"+anliTitle+"','"+anliProType+"','"+pic1+"','"+pic2+"','"+anliContent+"','"+format.getDateTime()+"')";
       boolean isInsert=cbean.updateslei(insertSql);
       if(isInsert){
           out.print("<SCRIPT language='javascript'>");
           out.print("alert('发布成功!');");
           out.print("window.location='item_anlictrl.jsp;'");
           out.print("</SCRIPT>");
       }else{
           out.print("<SCRIPT language='javascript'>");
           out.print("alert('系统遇忙,请稍后重试!');");
           out.print("window.location='item_anli.jsp;'");
           out.print("</SCRIPT>");
       }
      }
      else{
       out.print("<SCRIPT language='javascript'>");
       out.print("alert('上传文件大小不能超过"+(file_size_max/1000)+"K');");
       out.print("window.location='item_anli.jsp;'");
       out.print("</SCRIPT>");
      }
     }
}catch (Exception e){

e.toString();

}
%>