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

詳解SpringMVC實(shí)現(xiàn)圖片上傳以及該注意的小細(xì)節(jié)

 更新時(shí)間:2017年02月28日 09:39:34   作者:JustCode  
本篇文章主要介紹了詳解SpringMVC實(shí)現(xiàn)圖片上傳以及該注意的小細(xì)節(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

先附上圖片上傳的代碼

jsp代碼如下:

<form action="${path}/upload/uploadPic.do" method="post" enctype="multipart/form-data">   
<div>
    ![](${path}/mall/image/load_image.png)
    <input type="file" id="input-image" name="input-image">
    <input id="input-relative-path" name="imgs" type="hidden" >
    <input id="input-last-path" type="hidden">
    <input type="submit" value="上傳圖片">
 </div>
</form>

controller代碼:通過spring的方式實(shí)現(xiàn)

@Controller
@RequestMapping("/upload")
public class UploadController extends BaseController {
  @RequestMapping(value = "/uploadPic", method = RequestMethod.POST)
  @LoginCheck
  public void uploadPic(HttpServletRequest request, PrintWriter out, String lastRealPath) throws IOException {
    // 將當(dāng)前上下文初始化給CommonsMultipartResolver
    CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
    // 檢查form中是否有enctype="multipart/form-data"
    if (resolver.isMultipart(request)) {
      // 強(qiáng)制轉(zhuǎn)化request
      MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
      // 從表單獲取input名稱
      Iterator<String> iterable = req.getFileNames();
      // 存在文件
      if (iterable.hasNext()) {
        String inputName = iterable.next();
        // 獲得文件
        MultipartFile mf = req.getFile(inputName);
        byte[] mfs = mf.getBytes();
        // 定義文件名
        String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
          fileName = fileName + random.nextInt(10);
        }
        // 獲得后綴名
        String oriFileName = mf.getOriginalFilename();
        String suffix = oriFileName.substring(oriFileName.lastIndexOf("."));

        // 上傳圖片到本地
        String localPath = "/Users/ZR/Desktop/webPro/console/src/main/webapp/image/" + fileName + suffix;
        mf.transferTo(new File(localPath));

        // 獲取圖片的寬高
        BufferedImage bufferedImage = ImageIO.read(new FileInputStream(new File(localPath)));
        int width = bufferedImage.getWidth();
        int height = bufferedImage.getHeight();
        // 獲取文件大小
        long size = mf.getSize();
      }
    }
  }
}

spring-mvc.xml代碼:

 <!--
  文件上傳的視圖解析器,id值是固定的
 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="1024000"/>
  <!-- 其他屬性 -->
</bean>

功能的實(shí)現(xiàn)其實(shí)很簡單,但是對于初學(xué)者還是需要注意如下幾個(gè)點(diǎn)

  • form上的enctype="multipart/form-data"不能忘記。
  • <input type="file" onchange="submitUpload()" id="input-image" name="input-image"> 的name標(biāo)簽可以隨便取名,但是不能忽略,否則Iterator<String> iterable = req.getFileNames();這邊獲取的集合將為空。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中Jar包反編譯解壓和壓縮操作方法

    Java中Jar包反編譯解壓和壓縮操作方法

    JAR文件就是Java 檔案文件Java Archive,它是 Java 的一種文檔格式,這篇文章主要介紹了Java中Jar包反編譯解壓和壓縮,需要的朋友可以參考下
    2023-09-09
  • SpringCloud項(xiàng)目的log4j2漏洞解決方案詳解流程

    SpringCloud項(xiàng)目的log4j2漏洞解決方案詳解流程

    很多小伙伴因?yàn)長og4j2的驚爆0Day漏洞一時(shí)束手無策,這里提供最終解決方案可以進(jìn)行一個(gè)版本號(hào)的升級(jí),感興趣的朋友來看看吧
    2022-04-04
  • Java多線程實(shí)現(xiàn)的兩種方式

    Java多線程實(shí)現(xiàn)的兩種方式

    本文主要介紹了Java多線程實(shí)現(xiàn)的兩種方式:繼承Thread類、實(shí)現(xiàn)Runnable接口。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • Java異常處理方法匯總

    Java異常處理方法匯總

    這篇文章主要介紹了Java異常處理方法匯總,我們在軟件開發(fā)的過程中,任何語言的開發(fā)過程中都離不開異常處理。下面下小編加來給大家分享各種異常處理,希望對大家有所幫助,需要的朋友可以參考一下
    2021-12-12
  • 詳解Spring Data Jpa當(dāng)屬性為Null也更新的完美解決方案

    詳解Spring Data Jpa當(dāng)屬性為Null也更新的完美解決方案

    這篇文章主要介紹了詳解Spring Data Jpa當(dāng)屬性為Null也更新的完美解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • Java讀寫文件方法總結(jié)(推薦)

    Java讀寫文件方法總結(jié)(推薦)

    下面小編就為大家?guī)硪黄狫ava讀寫文件方法總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • 面試官:Java中new Object()到底占用幾個(gè)字節(jié)

    面試官:Java中new Object()到底占用幾個(gè)字節(jié)

    這篇文章主要介紹了面試官:Java中new Object()到底占用幾個(gè)字節(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java設(shè)計(jì)模式之備忘錄模式使用詳解

    Java設(shè)計(jì)模式之備忘錄模式使用詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式中備忘錄模式的使用,備忘錄設(shè)計(jì)模式也叫作快照模式,主要用于實(shí)現(xiàn)防丟失、撤銷、恢復(fù)等功能,本文將通過示例為大家講解備忘錄模式的定義與使用,需要的同學(xué)可以參考一下
    2024-02-02
  • JVM 參數(shù)配置詳細(xì)介紹

    JVM 參數(shù)配置詳細(xì)介紹

    這篇文章主要介紹了JVM 參數(shù)配置詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java中optional的一些常用方法總結(jié)

    java中optional的一些常用方法總結(jié)

    Java8引入了一個(gè)非常強(qiáng)大的特性就是Optional類,其主要解決的問題就是我們編程時(shí)常常遇到的空指針異常,下面這篇文章主要給大家介紹了關(guān)于java中optional的一些常用方法,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

威远县| 图木舒克市| 延庆县| 茶陵县| 乌审旗| 周口市| 孝义市| 丰台区| 安新县| 陆川县| 靖边县| 山阴县| 常德市| 乌鲁木齐县| 通江县| 斗六市| 金寨县| 临桂县| 巴林右旗| 梧州市| 科技| 鞍山市| 郴州市| 迁西县| 博乐市| 尖扎县| 遵义市| 和政县| 油尖旺区| 佛山市| 弋阳县| 礼泉县| 长治县| 曲周县| 合川市| 东明县| 鄂托克前旗| 和林格尔县| 阿拉善盟| 同心县| 长岛县|