最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)圖片的上傳與展示實(shí)例代碼

 更新時(shí)間:2018年12月04日 08:40:01   作者:MXC肖某某  
這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)圖片的上傳與展示的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在很多的網(wǎng)站都可以實(shí)現(xiàn)上傳頭像,可以選擇自己喜歡的圖片做頭像,從本地上傳,下次登錄時(shí)可以直接顯示出已經(jīng)上傳的頭像,那么這個(gè)是如何實(shí)現(xiàn)的呢?下面話不多說了,來一起看看詳細(xì)的介紹吧

一、注意事項(xiàng):

1,該項(xiàng)目主要采用的是springboot+thymeleaf框架

2,代碼展示的為ajax完成圖片上傳(如果不用ajax只需要改變相應(yīng)的form表單配置即可)

二、效果實(shí)現(xiàn):

1,頁面效果:

 

2,文件夾路徑下就會多了對應(yīng)的圖片:


三、代碼實(shí)現(xiàn):

1,在html文本中編輯為(采用thymeleaf框架):

<!-- 圖片文本框 -->
<input type="file" class="form-control" id="file" name="file" th:onchange="javascript:preview(this)">
<!-- 這個(gè)是在上傳之前回顯圖片圖片展示 -->
<div id="preview">
  <!--這個(gè)是為了將頁面返回的圖片展示出來的.默認(rèn)隱藏-->
  <img style="width: 100px; height: 100px;display:none" id="imgHidden" />
</div>

<!-- 提交...這里pageIndex和pageSize可傳可不傳,主要取決于提交之后是否需要回到當(dāng)前頁面. -->
<button type="submit" th:onclick="javascript:submitForm([[${pageIndex}]],[[${pageSize}]])" class="btn btn-primary">提交</button>

2,編輯js代碼:

兩種情況:1,有file中有值的時(shí)候提交;2,file文件中沒有值的時(shí)候提交

function submitForm(pageIndex, pageSize) {
  var formData = new FormData(); //將需要提交的參數(shù)封裝起來
  formData.append("id", $("#id").val());
  var zswb = $("#file").val(); //獲取file中的內(nèi)容,看是否有值
  if (zswb == '' || zswb.length < 1) { //沒有file提交的時(shí)候走的接口
    $.ajax({
      url : '/editMovieWithoutFile',
      type : 'post',
      data : formData,
      processData : false,
      contentType : false,
      success : function(value) {
        var result = JSON.parse(value);
        if (result == 'true') {
          window.location.href = "/index?pageIndex=" + pageIndex+ "&pageSize=" + pageSize;
        } else {
          Lobibox.alert('error', {msg : "媒資信息更新失敗!!!"});
        }
      }
    });
  } else { //有file提交的時(shí)候走的接口
    formData.append("file", $("#file")[0].files[0]);
    $.ajax({
      url : '/editMovieInfo',
      type : 'post',
      data : formData,
      processData : false,
      contentType : false,
      success : function(value) {
      var result = JSON.parse(value);
    if (result == 'true') {
      window.location.href = "/index?pageIndex=" + pageIndex+ "&pageSize=" + pageSize;
    } else {
      Lobibox.alert('error', {msg : "媒資信息更新失敗!!!"});
    }
   }
  });
 }
}
//圖片回顯:
function preview(file) {
  $("#imgHidden").css("display", "none");
  var prevDiv = document.getElementById('preview');
  if (file.files && file.files[0]) {
    var reader = new FileReader();
    reader.onload = function(evt) {
      prevDiv.innerHTML = '<img style="width: 100px;height: 100px;" src="' + evt.target.result + '" />';
    }
    reader.readAsDataURL(file.files[0]);
  } else {
    prevDiv.innerHTML = '<div class="img" style="width: 100px;height:100px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + 
file.value + '\'"></div>';
  }
}

3,application.properties中的配置上傳的限制

#配置文件傳輸
spring.servlet.multipart.enabled=true 
spring.servlet.multipart.file-size-threshold=0
#單個(gè)數(shù)據(jù)的大小
spring.servlet.multipart.maxFileSize=100MB
#總數(shù)據(jù)的大小
spring.servlet.multipart.maxRequestSize=100MB

4,controller(這里就不演示無file的情況,因?yàn)橹皇墙邮軈?shù)很簡單):

/**
* 有file文件時(shí)
* @param movieDto 封裝了需要傳遞過來的參數(shù)
* @param file 圖片file
*/
@RequestMapping("/editMovieInfo")
@ResponseBody
public String editMovieInfo(@RequestParam("id")final int id,@RequestParam("file")MultipartFile file) {
   int result = btShareService.editMovieInfo(id,file,uploadDir);
   if (result > -1) {
    return JSON.toJSONString("true");
   } else {
    return JSON.toJSONString("false");
  }
}

5,service層處理:

@Transactional
@Override
public int editMovieInfo(int id, MultipartFile file,String uploadDir) {
 try {
     // 圖片路徑
  String imgUrl = null;
     //上傳
  String filename = upload(file, uploadDir, file.getOriginalFilename());
  if (!EmptyUtil.isEmpty(filename)) {
   imgUrl = new File(uploadDir).getName() + "/" + filename;
  }
  MovieInfo movie = movieInfoService.selectMovieInfoByDcpId(Integer.valueOf(movieDto.getId()));
     movie .setImgUrl(imgUrl)
  movieInfoService.updateMovieInfoByDcpId(movieInfo);
      return 0;
 } catch (Exception e) {
    e.printStackTrace();
     return -1;
   }
}

圖片上傳的方法

public String upload(MultipartFile file, String path, String fileName) throws Exception {
  // 生成新的文件名
  String realPath = path + "/" + UUID.randomUUID().toString().replace("-", "")+fileName.substring(fileName.lastIndexOf("."));
  File dest = new File(realPath);
  // 判斷文件父目錄是否存在
  if (!dest.getParentFile().exists()) {
    dest.getParentFile().mkdir();
  }
  // 保存文件
  file.transferTo(dest);
  return dest.getName();
}

6,至于Dao層的操作和數(shù)據(jù)庫修改這里就直接省略了....

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 在lambda中使用外部變量的一些心得分享

    在lambda中使用外部變量的一些心得分享

    這篇文章主要介紹了在lambda中使用外部變量的一些心得,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • MapStruct處理Java中實(shí)體與模型間不匹配屬性轉(zhuǎn)換的方法

    MapStruct處理Java中實(shí)體與模型間不匹配屬性轉(zhuǎn)換的方法

    今天小編就為大家分享一篇關(guān)于MapStruct處理Java中實(shí)體與模型間不匹配屬性轉(zhuǎn)換的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Win10系統(tǒng)下配置java環(huán)境變量的全過程

    Win10系統(tǒng)下配置java環(huán)境變量的全過程

    這篇文章主要給大家介紹了關(guān)于Win10系統(tǒng)下配置java環(huán)境變量的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot的配置文件(properties與yml)使用方法

    SpringBoot的配置文件(properties與yml)使用方法

    配置文件中的配置類型有兩類,一類是系統(tǒng)配置項(xiàng),這種配置的格式都是固定的,是給系統(tǒng)使用的,另一種是用戶自定義配置,用戶可以隨意地規(guī)定配置項(xiàng)的格式,又用戶自行去設(shè)置和讀取,這篇文章主要介紹了SpringBoot的配置文件(properties與yml)使用方法,需要的朋友可以參考下
    2023-08-08
  • Springboot采用jasypt加密配置的項(xiàng)目實(shí)踐

    Springboot采用jasypt加密配置的項(xiàng)目實(shí)踐

    本文主要介紹了在Spring Boot項(xiàng)目中使用Jasypt對配置文件中的敏感信息進(jìn)行加密,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • 很詳細(xì)的Log4j配置步驟

    很詳細(xì)的Log4j配置步驟

    Log4J的配置文件(Configuration File)就是用來設(shè)置記錄器的級別、存放器和布局的,它可接key=value格式的設(shè)置或xml格式的設(shè)置信息。通過配置,可以創(chuàng)建出Log4J的運(yùn)行環(huán)境。
    2008-11-11
  • Java 添加文本框到PPT幻燈片過程解析

    Java 添加文本框到PPT幻燈片過程解析

    這篇文章主要介紹了Java 添加文本框到PPT幻燈片過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • maven-surefire-plugin總結(jié)示例詳解

    maven-surefire-plugin總結(jié)示例詳解

    這篇文章主要介紹了maven-surefire-plugin總結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java異常處理原理與用法實(shí)例分析

    Java異常處理原理與用法實(shí)例分析

    這篇文章主要介紹了Java異常處理原理與用法,結(jié)合實(shí)例形式分析了Java異常處理相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • Mybatis官方生成器的使用方式

    Mybatis官方生成器的使用方式

    本文詳細(xì)介紹了MyBatisGenerator(MBG)的使用方法,通過實(shí)際代碼示例展示了如何配置Maven插件來自動化生成MyBatis項(xiàng)目所需的實(shí)體類、Mapper接口和MapperXML文件,MBG通過配置文件和Maven插件,可以大大減少開發(fā)人員在進(jìn)行CRUD操作時(shí)的重復(fù)工作,提升開發(fā)效率和代碼一致性
    2025-01-01

最新評論

阳信县| 吴川市| 图们市| 石台县| 汶上县| 巴中市| 清原| 加查县| 慈溪市| 简阳市| 泾川县| 丰城市| 灵台县| 宁国市| 黄山市| 天柱县| 台安县| 忻州市| 浦江县| 枝江市| 孝昌县| 宁明县| 吴旗县| 元朗区| 景宁| 盐源县| 宜川县| 兴义市| 邹平县| 白山市| 公安县| 庆城县| 公主岭市| 泸西县| 玉田县| 海南省| 湾仔区| 九龙坡区| 罗山县| 丰原市| 广安市|