文档章节

jsp上传下载图片

yeqiang2015
 yeqiang2015
发布于 2015/07/22 16:33
字数 799
阅读 44
收藏 1

jsp实现照片的上传和下载

一.进入页面

@RequestMapping("/upimage")

 public String upImageDemo() {

  return "/testImageUp";

 }

二.上传照片

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

 String path = request.getContextPath();

 String basePath = request.getScheme() + "://"

   + request.getServerName() + ":" + request.getServerPort()

   + path + "/";

 System.out.println("path:"+path);

 System.out.println("basePath:"+basePath);

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>多图片上传</title>

<script src="${basePath}../js/jquery-1.11.0.min.js"></script>

<script src="${basePath}../js/upImage.js"></script>

<body>

 <form enctype="multipart/form-data"

  action="${basePath}upimage2" method="post">

  <div id="preview"></div>

  <div id="file-input">

   <input id="id0" type="file" name="/upload/"

    onchange="previewImage(this)">

  </div>

  <input type="submit" value="提交">

 </form>

</body>

</html>

三.进入跳转的页面进行操作(此处因为只能页面传页面,而页面有在WEB-INF下面,只能通过这    

    个方式跳转到指定页面)

@RequestMapping("/upimage2")

 public void image2Servicec(HttpServletRequest request,HttpServletResponse response){

  try {

   request.getRequestDispatcher("/WEB-INF/views/testImageUp2.jsp").forward(request,response);

  } catch (ServletException e) {

   e.printStackTrace();

  } catch (IOException e) {

   e.printStackTrace();

  }

 } 

四.进行下载到服务器的指定目录

<%@ page language="java" import="java.util.*,java.io.*"  

    pageEncoding="utf-8"%>  

<%@ page import="com.jspsmart.upload.SmartUpload"%>  

<%@ page import="javax.servlet.jsp.tagext.TryCatchFinally"%>  

<%@ page import="javax.imageio.ImageIO"%>  

<%@ page import="java.awt.image.BufferedImage"%>  

<%@ page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>  

<%@ page import="com.sun.image.codec.jpeg.JPEGCodec"%>  

<%  

    String path = request.getContextPath();  

    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()  

            + path + "/";  

%>  

<%  

 System.out.println("==========into testImageUp2.jsp===========");

    //这个处理文件实现了对图片的压缩  

    SmartUpload mySmartUpload = new SmartUpload();  

    long file_size_max = 40000000;  

    String fileName2;//文件名  

    String ext;//文件扩展名  

    String testVar;  

    String url = "/upload/";//应保证在根目录中有此目录的存在  

    System.out.println("url:"+url);

    //初始化  

    System.out.println("pageContext:"+pageContext);

    mySmartUpload.initialize(pageContext);  

    //只允许上载此类文件  

    try {  

        //支持上载文件的后缀名  

        mySmartUpload.setAllowedFilesList("jpg,gif");  

        //mySmartUpload.setAllowedFilesList("jpg,gif,jpeg,png");

        //不支持制定的后缀  

        mySmartUpload.setDeniedFilesList("exe");

 

        //上载文件  

         mySmartUpload.upload();//不指定编码的upload()方法  

       // mySmartUpload.upload("utf-8");//指定编码的upload()方法  

    } catch (Exception e) {  

        out.print("<script type=\"text/javascript\">");  

        out.print("window.alert(\"只允许上传.jpg和.gif类型图片文件\");");  

        out.print("window.location=\"upload.html;\"");  

        out.print("</script>");  

    }  

    try {  

     System.out.println("the files size:"+(mySmartUpload.getFiles().getCount()-1));

        for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++) {

            com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);  

         if(myFile.getFileExt() == "" || myFile.getFileExt() == null){

          continue;

         }

           /*  if (myFile.isMissing()) {

                out.print("<script type=\"text/javascript\">");  

                out.print("window.alert(\"请先选择要上传的文件\");");  

                out.print("window.location=\"upload.html;\"");  

                out.print("</script>");  

            } else {   */

                String myFileName = myFile.getFileName();//取得上载的文件的文件名  

                ext = myFile.getFileExt();//取得后缀名  

                if (!(ext.length() > 0)) {  

                    //out.println("**************myFileName的名称是:" + myFileName);  

                }  

 

                int file_size = myFile.getSize();//取得文件的大小  

                String saveUrl = "";//文件保存路径  

                if (file_size < file_size_max) {  

                    //更改文件名,取得当前上传时间的毫秒数值  

                    Calendar calendar = Calendar.getInstance();  

                    String fileName = String.valueOf(calendar.getTimeInMillis());//设置新的文件名  

                    saveUrl += fileName + "." + ext;  

                    myFile.saveAs(saveUrl, mySmartUpload.SAVE_PHYSICAL);  

 

                    //上传完成,开始生成缩略图  

                    java.io.File file = new java.io.File(saveUrl);//读入刚才上传的文件  

                    out.println("ext=" + ext);  

                    String newUrl = request.getRealPath("/") + url + fileName + "_min." + ext;//新的缩略图保存地址  

                    java.awt.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();  

 

                } else {  

                    out.print("<script type=\"text/javascript\">");  

                    out.print("window.alert(\"上传文件大小不能超过\"+(file_size_max/1000)+\"K\");");  

                    out.print("window.location=\"upload.html;\"");  

                    out.print("</script>");  

                }  

          /*   }   */

        }  

    } catch (Exception e) {  

        e.printStackTrace();  

    }  

%>  

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  

<html>  

    <head>  

        <base href="<%=basePath%>">  

        <title>处理上传图片的JSP</title>  

        <meta http-equiv="pragma" content="no-cache">  

        <meta http-equiv="cache-control" content="no-cache">  

        <meta http-equiv="expires" content="0">  

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  

        <meta http-equiv="description" content="This is my page">  

    </head>  

    <body>  

    </body>  

</html>  


© 著作权归作者所有

yeqiang2015
粉丝 2
博文 21
码字总数 7740
作品 0
丰台
后端工程师
私信 提问
Servlet3.0.1与dojo实现图片AJAX上传与下载,附lastmodified实现

开发环境 tomcat8, eclipse+maven,dojo1.9 Maven项目 首先需要生成一个webapp的maven项目。本次开发用到了tomcat的servlet api, jsp api以及jstl,因此需要在pom.xml中声明所需的依赖。为了不...

xpbug
2014/03/15
0
0
jsp上传文件fileupload

手把手教Jsp上传文件(FileUpload+Servlet) 本教程以Apache组织的commons项目中的FileUpload项目做为jsp的文件上传组件,FileUpload项目完全尊守RFC1867规范中 关于在HTTP request 中通过Post方...

功夫panda
2012/02/20
0
0
SpringMVC实现上传和下载

package com.pk.web.controller; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.mult......

Jeremy_pan
2014/09/06
0
4
分享26个关于Java开发视频教程(免费下载)

分享26个关于Java开发视频教程(免费下载) 1、开发前传_CSS.avi 2、开发前传_HTML基础.avi 3、开发前传_javascript.avi 4、Web开发工具的安装与使用.avi 5、Servlet起源.avi 6、Servlet编程...

邓剑彬
2012/12/01
386
1
Servlet - Upload、Download、Async、动态注册

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanqing280441589/article/details/51371389 标签 : Java与Web Upload-上传 随着3.0版本的发布,文件上传终于...

菜鸟-翡青
2016/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql报错 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

CentOS 6.5 下安装配置 mysql 使用yum安装,具体过程参见最下边的参考文章。 安装之后启动失败: [root@localhost ~]# service mysqld startStarting mysqld: ...

BG2KNT
15分钟前
1
0
IOC的学习(1)

IOC IOC创建bean的4种方式: 无参构造器, 有参构造器,其中<constructor-arg>可以通过index="0"或者type="int"来指定构造方法参数。 静态工厂方法,factory-method。 普通工厂方法,需要指定......

太猪-YJ
29分钟前
1
0
tomcat 莫名奔溃问题

Apr 24, 2019 6:18:11 PM org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler ["http-nio-8080"] Apr 24, 2019 6:18:12 PM org.apache.coyote.AbstractProtocol pause......

mellen
46分钟前
3
0
组件开发规范 class名身份识别

组件需要通过一个组件共有的class来标识这个组件,外部调用的时候,可以通过锁定这个class来方便地改变组件的css样式。 设置方式 .my-checkbox { width: 20px; height: 20px; font-...

Carbenson
54分钟前
3
0
如何在工作中快速成长?致工程师的10个简单技巧

阿里妹导读:阿里有句非常经典的土话,“今天的最好表现,是明天的最低要求。”如何挖掘潜能、发现更好的自己?今天,阿里巴巴高级无线开发专家江建明将认知升级的方法总结出来,帮助你获得快...

阿里云云栖社区
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部