查看: 425|回复: 0

[Java技术] Java上传文件图片到服务器的方法

[复制链接]
  • TA的每日心情
    开心
    2017-12-23 16:18
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2018-1-28 22:54:23 | 显示全部楼层 |阅读模式
    这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存,具体内容如下
    首先是页面html的   我这是提交一个文件和类型
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <div style="border: 1px solid red;">
      我是添加一张临时图片得到微信的media_id保存数据库!
      <form action="xxxxxxxxm"
      enctype="multipart/form-data" method="post">
      <div style="display: none;">
       <input type="text" value="IMAGE" name="type"/>
      </div>
      上传图片:<input type="file" name="file"
       onchange="previewImage(this, 'prvid')" multiple="multiple"><br />
      <input type="submit" value="提交" />
      </form>
      <div id="prvid">预览容器</div>
    </div>
    预览图片js
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    function previewImage(file, prvid) {
    /* file:file控件
    * prvid: 图片预览容器
    */
    var tip = "Expect jpg or png or gif!"; // 设定提示信息
    var filters = {
    "jpeg" : "/9j/4",
    "gif" : "R0lGOD",
    "png" : "iVBORw"
    }
    var prvbox = document.getElementById(prvid);
    prvbox.innerHTML = "";
    if (window.FileReader) { // html5方案
    for (var i = 0, f; f = file.files; i++) {
      var fr = new FileReader();
      fr.onload = function(e) {
      var src = e.target.result;
      if (!validateImg(src)) {
       alert(tip)
      } else {
       showPrvImg(src);
      }
      }
      fr.readAsDataURL(f);
    }
    } else { // 降级处理
      
    if (!/\.jpg$|\.png$|\.gif$/i.test(file.value)) {
      alert(tip);
    } else {
      showPrvImg(file.value);
    }
    }
      
    function validateImg(data) {
    var pos = data.indexOf(",") + 1;
    for ( var e in filters) {
      if (data.indexOf(filters[e]) === pos) {
      return e;
      }
    }
    return null;
    }
      
    function showPrvImg(src) {
    var img = document.createElement("img");
    img.src = src;
    prvbox.appendChild(img);
    }
    }
    之后就是后台得到
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @RequestMapping(params = "method=addCircle")
    public String addCircle(HttpServletResponse response,HttpServletRequest request) throws IOException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
      
      
    String path = request.getSession().getServletContext().getRealPath(
      "/BackstageShoppingWebsite/images/addCircleimage");//保存的服务器地址
      
      
    Map<String, String> map = Upload
      .upload(request, 1024 * 1024 * 10, path);
      
      
    String file= map.get("file"); // 名称
    String image = map.get("type"); // 图像
    String newFile = map.get("newFile");// 地址
      
    return null;
    }
    好了现在重点就是看Upload 这个类了 这个类基本是封装好了的,需要 加的东西可以自己取看看然后修改,然后这个类用的是cos.jar包
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    package com.web.weixin.bean;
    import java.io.File;
    import java.io.IOException;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
      
    import com.oreilly.servlet.multipart.FilePart;
    import com.oreilly.servlet.multipart.MultipartParser;
    import com.oreilly.servlet.multipart.ParamPart;
    import com.oreilly.servlet.multipart.Part;
      
      
    public class Upload {
      
    public static Map<String, String> upload(HttpServletRequest request,
      int maxSize, String path) {
       
    //以map形式保存数据 key对应保存的是获取界面上的name名称 value保存的是获取界面上的name对应的值
    Map<String, String> map = new HashMap<String, String>();
    Part part = null;
    try {
      MultipartParser mrequest = new MultipartParser(request, maxSize);
      mrequest.setEncoding("utf-8");
      //遍历所有的part组
      while ((part = mrequest.readNextPart()) != null) {
      if (part.isFile()) { //判断是否是文件
      
       FilePart filepart = (FilePart) part;//转化成文件组
      
       String fileName = filepart.getFileName();//得到文件名
      
       if (fileName != null && fileName.length() > 0) {
       // 取得扩展名
       String fileExtName = fileName.substring(
        fileName.lastIndexOf(".") + 1).toLowerCase();
       // 只上传图片 //判断图片上传的格式是否符合 后缀名是否有效
       if (fileExtName.equalsIgnoreCase("jpeg")
        || fileExtName.equalsIgnoreCase("png")||
        fileExtName.equalsIgnoreCase("jpg")
        || fileExtName.equalsIgnoreCase("gif")
        || fileExtName.equalsIgnoreCase("ico")
        || fileExtName.equalsIgnoreCase("bmp")
        || fileExtName.equalsIgnoreCase("flv")
        || fileExtName.equalsIgnoreCase("mp4")
        || fileExtName.equalsIgnoreCase("mp3")) {
      
         
        /*String newFileName = new Date().getTime() + "."+ fileExtName;
        //重新改文件名 文件名+扩展名 */   
         
        String newFileName =new Date().getTime() +fileName;//不改图片名字
         
        String newPath = path + "/" + newFileName; //文件处理文件上传的路径
        File newFile = new File(newPath);
         
        filepart.writeTo(newFile); //将文件真正写入到对应的文件夹中
         
        //filepart.getName() 得到 request 要接收的参数的名字
         
        map.put(filepart.getName(), newFileName);//把文件信息保存到map中
        map.put("newFile", newFile.toString());
       } else {
        map.put("geshi", "geshi");
        continue;
       }// 说明上传的不是图片
       } else {
      
       map.put("yes","yes");
      
       continue; // 说明没有选择上传图片
       }
      
      } else if (part.isParam()) { //判断是否是参数
       ParamPart paramPart = (ParamPart) part;
       map.put(paramPart.getName(), paramPart.getStringValue());
      
      }
      }
      
    } catch (IOException e) {
      e.printStackTrace();
    }
    return map;
    }
      
    }

    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2018 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表