java实现图片上传

1.首先上html的代码

<!DOCTYPE html>

<html>

  <head>

    <title>Test.html</title>

    <meta name="keywords" content="keyword1,keyword2,keyword3">

    <meta name="description" content="this is my page">

    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">   

    <script type="text/javascript" src="../id/js/jquery-1.7.2.js"></script> 

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>

  <body>

  <div class="aaa">

    上传图片<input type="file" id="file" onchange="change()" accept="image/*"/> 

    <img id="img" src="" style="width:60px;height:60px;"/>

    </div>

    <script> 

      function change(){

      var filePath = $("#file").val();

      alert("filePath "+filePath);      

      var imgObj =$("#file")[0].files[0];

      alert("imgObj "+imgObj);          

      //将formData传给后台

          var formData=new FormData();

          formData.append("file",imgObj);

          alert("formData"+formData);

              //ajax请求后台,将请求的数据调用fileUp接口并且填写上传的服务器地址savePath

              $.ajax({

                    url: "http://192.168.1.107:8080/SellingTea/fileUp?savePath=uploadFiles/headPortrait",

                    type: "POST",

                    data: formData,

                    dataType:"json",

                    /**

                    *必须false才会自动加上正确的Content-Type

                    */

                    contentType: false,

                    /**

                    * 必须false才会避开jQuery对 formdata 的默认处理

                    * XMLHttpRequest会对 formdata 进行正确的处理

                    */

                    processData: false,

                    success: function (data) {

                      if(data){

                        alert("上传成功!");

                        console.log("data "+JSON.stringify(data));

                        $("#img").attr("src",data.path);                 

                      }                     

                    },

                    error: function () {

                      alert("上传失败!");                   

                  }

              });   

      }         

  </script>

  </body>

</html>

2.在看接口

3.接口内容

package com.st.controller.system;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.text.SimpleDateFormat;

import java.util.Map;

import java.util.logging.Logger;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import org.springframework.stereotype.Controller;

import org.springframework.util.FileCopyUtils;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import com.st.controller.base.BaseController;

import com.st.util.DateUtil;

/**

*

* @author wy

*

*/

@Controller

public class FileUpController extends BaseController {

Logger logger = Logger.getLogger(FileUpController.class.getName());

/**

* 处理文件上传

* @param response

* @param request

* @return

* @throws IOException

*/

@RequestMapping(value="fileUp") 

public void upload(HttpServletResponse response,HttpServletRequest request) throws IOException{

logger.info("处理文件上传");

response.setCharacterEncoding("utf-8");

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

  Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();   

  //String savePath = this.getServletConfig().getServletContext().getRealPath("");       

  //savePath = savePath + "/uploads/";

  // 文件保存路径  ctxPath本地路径

  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); 

  //String ymd = sdf.format(new Date());  +File.separator+"uploadFiles/czy"

  String savefile = request.getParameter("savePath");

  String replace = request.getParameter("replace");

  String ctxPath=request.getSession().getServletContext().getRealPath("/");


  String allpath = request.getRequestURL().toString();

  String all[] = allpath.split("fileUp");

  String currpath = all[0];

  System.out.println("currpath="+currpath+savefile);


  if("1".equals(replace)){//1替换项目名

  String a= ctxPath.replace("SellingTea","productImg");

  ctxPath =a;

  System.out.println("路径1" + ctxPath);   

  }else{

  ctxPath=request.getSession().getServletContext().getRealPath("/")+savefile+"\\";

  }

  // ctxPath=request.getSession().getServletContext().getRealPath("/")+File.separator+"uploadFiles/czy";

// ctxPath += File.separator + ymd + File.separator; 

  ctxPath += File.separator; 

  System.out.println("ctxpath="+ctxPath);

  // 创建文件夹 

  File file = new File(ctxPath);   

  if (!file.exists()) {   

  file.mkdirs();   

  }

  String fileName = null;   

  for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {   

  // 上传文件 

  MultipartFile mf = entity.getValue(); 

  fileName = mf.getOriginalFilename();

  //获取原文件名 

  System.out.println("filename="+fileName);

  String realNmae=DateUtil.getDteStr()+"@"+ fileName;

  File uploadFile = new File(ctxPath +realNmae);

  try { 

  FileCopyUtils.copy(mf.getBytes(), uploadFile); 

  JSONObject json=new JSONObject();

  json.put("sendName", fileName);

  json.put("realNmae", realNmae);

  json.put("path", currpath+savefile+"/"+realNmae);

  System.out.println("path="+ctxPath+realNmae);

  PrintWriter pw =response.getWriter();

  pw.print(json);

  pw.close();

      System.out.println("上传成功");   

  } catch (IOException e) {   


  System.out.println("上传失败");       

      e.printStackTrace();       

  }

  } 

      }

}

4.效果图


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,649评论 18 139
  • 一、流的概念和作用。 流是一种有顺序的,有起点和终点的字节集合,是对数据传输的总成或抽象。即数据在两设备之间的传输...
    布鲁斯不吐丝阅读 10,030评论 2 95
  • 若一个人影响了你的情绪,你的焦点应该在如何控制自己的情绪上,而不是这个人。
    远方那片云阅读 167评论 0 0
  • 有人问我,为什么会走到情感咨询这条路上来,我总是笑着说:“因为我感觉自己和周围的妹子们吃的亏有点多啊!” 看似笑话...
    猫爱吃西瓜阅读 305评论 0 0