欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

如何利用springboot、thymeleaf和jquery實(shí)現(xiàn)多文件圖片上傳功能

本篇內(nèi)容介紹了“如何利用springboot、thymeleaf和jquery實(shí)現(xiàn)多文件圖片上傳功能”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括華安網(wǎng)站建設(shè)、華安網(wǎng)站制作、華安網(wǎng)頁(yè)制作以及華安網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,華安網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到華安省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

如何利用springboot、thymeleaf和jquery實(shí)現(xiàn)多文件圖片上傳功能

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <link th:href="@{favicon.ico}"  rel="shortcut icon"/>
    <title>上傳頁(yè)</title>
    <script th:src="@{/webjars/jquery/dist/jquery.js}"  type="text/javascript"></script>

</head>
<body>
    <div class="con">
        <form action="multiUpload" method="post" enctype="multipart/form-data">
            <input type="file" name="file"><br/>
            <input type="file" name="file"><br/>
            如上傳圖片:會(huì)展示最后一個(gè)上傳的圖片: <input type="file" name="file"><br/>
            <button type="submit">上傳</button>
        </form>

        <img th:src="${filePath}" width="300px" height="300px">
        <div th:if="${ message }">
            <h3 th:text="${ message }"/>
        </div>
    </div>
    <div>
        下載文件名:
        <input type="text" value="" id="fileName"/>
        <input type="button" value="下載"  onclick="download()"/>
        <script>
            $(document).ready(function(){
            });
            function download(){
                let fileName = $("#fileName").val();
                if(fileName){
                    window.open("http://" + window.location.host + "/download/" + fileName, '_blank')
                }else{
                    alert("輸入文件名")
                }
            }
        </script>
    </div>
</body>
</html>
# 文件路徑, 注意路徑末尾一定要帶上/
user.file.path=E:/upload/
package com.example.springboot_jxc_0511.common;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 參考:https://blog.csdn.net/sinat_34104446/article/details/100178488
 */
@Component
public class CustomWebConfiguration implements WebMvcConfigurer {
    @Value("${user.file.path}")
    private String filePath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        // 注意如果filePath是寫死在這里,一定不要忘記尾部的/或者\(yùn)\,這樣才能讀取其目錄下的文件
        registry.addResourceHandler("/**").addResourceLocations(
                "classpath:/META-INF/resources/",
                "classpath:/resources/",
                "classpath:/static/",
                "classpath:/public/",
                "file:/" + filePath,
                "classpath:/webapp/");
    }
}
package com.example.springboot_jxc_0511.common;

import javax.servlet.http.HttpServletResponse;
import java.io.*;

public class FileUtil {
    public static void download(String filename, HttpServletResponse res) throws IOException {
        // 發(fā)送給客戶端的數(shù)據(jù)
        OutputStream outputStream = res.getOutputStream();
        byte[] buff = new byte[1024];
        BufferedInputStream bis = null;
        // 讀取filename
        bis = new BufferedInputStream(new FileInputStream(new File("e:/upload/" + filename)));
        int i = bis.read(buff);
        while (i != -1) {
            outputStream.write(buff, 0, buff.length);
            outputStream.flush();
            i = bis.read(buff);
        }
    }
}
package com.example.springboot_jxc_0511.common;


import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot_jxc_0511.common.FileUtil;
import com.example.springboot_jxc_0511.jxc.common.Constants;
import com.example.springboot_jxc_0511.jxc.entity.Product;
import com.example.springboot_jxc_0511.jxc.entity.Sale;
import com.example.springboot_jxc_0511.jxc.entity.Users;
import com.example.springboot_jxc_0511.jxc.service.IProductService;
import com.example.springboot_jxc_0511.jxc.service.ISaleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author gongxl
 * @since 2021-05-11
 */
@Controller
@RequestMapping
public class UploadController {
    @Value("${user.file.path}")
    private String filePath;
    /**
     * @Author GongXl
     * @Description
     * @Date 2021/5/20 14:44
     * @Param [model]
     * @return java.lang.String
     **/
    @RequestMapping("/toUpload")
    public String toUpload(Model model) {
        return "upload";
    }
    /**
     * @Author GongXl
     * @Description 單文件上傳
     * @Date 2021/5/20 14:47
     * @Param [file, model]
     * @return java.lang.String
     **/
    @PostMapping("/uploadFile")
    public String upload(@RequestParam("file") MultipartFile file, Model model){
        if (file.isEmpty()){
            model.addAttribute("message", "The file is empty!");
            return "upload";
        }
        try{
            byte[] bytes = file.getBytes();
            Path path = Paths.get(filePath + file.getOriginalFilename());
            Files.write(path, bytes);
            model.addAttribute("message", "succes");
        }catch (Exception e){
            e.printStackTrace();
        }
        return "upload";
    }

    /**
     * 多文件上傳
     * @param request
     * @param model
     * @return
     */
    @PostMapping("/multiUpload")
    public String multiUpload(HttpServletRequest request, Model model) {
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
        File fileTemp =  new File(filePath);
        //判斷文件父目錄是否存在
        if(!fileTemp.exists()){
            //不存在就創(chuàng)建一個(gè)
            fileTemp.mkdirs();
        }
        for (int i = 0; i < files.size(); i++) {
            MultipartFile file = files.get(i);
            if (file.isEmpty()) {
                model.addAttribute("message", "上傳第"+i+"個(gè)文件失敗。");
            }
            String fileName = file.getOriginalFilename();

            File dest = new File(filePath + fileName);
            try {
                file.transferTo(dest);
                System.out.println(dest.getAbsolutePath());
                model.addAttribute("message", "succes");
                model.addAttribute("filePath","/"+fileName);
            } catch (IOException e) {
                model.addAttribute("message", "上傳異常");
            }
        }
        return "upload";
    }

    /**
     * 下載文件
     * @param fileName
     * @throws IOException
     */
    @RequestMapping(value = "/download/{fileName:.+}")
    public void download(@PathVariable String fileName) throws IOException {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletResponse response = requestAttributes.getResponse();
        // 設(shè)置信息給客戶端不解析
        String type = fileName.substring(fileName.lastIndexOf(".")+1);
        // 設(shè)置contenttype,即告訴客戶端所發(fā)送的數(shù)據(jù)屬于什么類型
        response.setHeader("Content-type",type);
        // 設(shè)置編碼
        String hehe = new String(fileName.getBytes("utf-8"), "iso-8859-1");
        // 設(shè)置擴(kuò)展頭,當(dāng)Content-Type 的類型為要下載的類型時(shí) , 這個(gè)信息頭會(huì)告訴瀏覽器這個(gè)文件的名字和類型。
        response.setHeader("Content-Disposition", "attachment;filename=" + hehe);
        FileUtil.download(fileName, response);
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot_jxc_0511</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_jxc_0511</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>MySQL</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.webjars/webjars-locator -->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>webjars-locator</artifactId>
            <version>0.40</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.webjars.bower/jquery -->
        <dependency>
            <groupId>org.webjars.bower</groupId>
            <artifactId>jquery</artifactId>
            <version>3.6.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.webjars/bootstrap -->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>5.0.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.webjars/layui -->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>layui</artifactId>
            <version>2.5.7</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

“如何利用springboot、thymeleaf和jquery實(shí)現(xiàn)多文件圖片上傳功能”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

當(dāng)前名稱:如何利用springboot、thymeleaf和jquery實(shí)現(xiàn)多文件圖片上傳功能
當(dāng)前地址:http://www.kartarina.com/article46/ispdeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)品牌網(wǎng)站制作標(biāo)簽優(yōu)化全網(wǎng)營(yíng)銷推廣網(wǎng)站導(dǎo)航網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
精品视频123区在线观看| 视频一区免费在线观看| 欧美一区二区二区| 欧美日韩国产综合一区二区| 色婷婷国产精品久久包臀 | 欧美一三区三区四区免费在线看| av网站免费线看精品| 99视频超级精品| 一本色道久久综合亚洲精品按摩| caoporm超碰国产精品| 91网站最新网址| 欧美日韩免费电影| 日韩午夜三级在线| 久久久久久影视| 综合中文字幕亚洲| 亚洲成在人线在线播放| 麻豆一区二区三区| 国产一区二区成人久久免费影院| 成人午夜看片网址| 91久久线看在观草草青青| 欧美欧美午夜aⅴ在线观看| 91精品在线麻豆| 国产偷国产偷亚洲高清人白洁| 国产精品你懂的在线| 亚洲图片欧美综合| 精品影视av免费| 97aⅴ精品视频一二三区| 欧美日韩国产高清一区二区 | 本田岬高潮一区二区三区| 91久久久免费一区二区| 精品久久久久久久人人人人传媒 | 色老汉一区二区三区| 91麻豆精品91久久久久久清纯| 26uuu欧美日本| 亚洲精品免费视频| 国产精品一区二区三区99| 91福利在线观看| 久久久午夜精品理论片中文字幕| 《视频一区视频二区| 七七婷婷婷婷精品国产| aaa欧美日韩| 日韩欧美国产成人一区二区| 亚洲免费观看视频| 久久99精品一区二区三区| 色女孩综合影院| 久久精品欧美日韩精品| 亚洲一区二区三区四区在线| 国产精品1区二区.| 日韩一区国产二区欧美三区| 亚洲精品国产精华液| 粉嫩aⅴ一区二区三区四区五区| 欧美日韩成人综合在线一区二区| 中文字幕一区二区三区四区| 久久 天天综合| 日韩欧美久久久| 性久久久久久久久久久久| 色视频成人在线观看免| 国产喷白浆一区二区三区| 久草在线在线精品观看| 在线成人高清不卡| 亚洲超丰满肉感bbw| 色偷偷88欧美精品久久久 | 在线影院国内精品| 国产精品久久久久一区| 国产精品小仙女| 久久综合久色欧美综合狠狠| 日本va欧美va欧美va精品| 欧美日韩成人综合在线一区二区 | 日韩欧美在线影院| 天天做天天摸天天爽国产一区| 色综合色综合色综合| 亚洲人快播电影网| 91在线观看一区二区| 亚洲欧洲另类国产综合| a级高清视频欧美日韩| 中文字幕一区二区不卡| 99久久婷婷国产| 亚洲精品国产精华液| 欧美亚洲愉拍一区二区| 亚洲午夜电影网| 欧美一级二级三级蜜桃| 久久激情综合网| 国产色91在线| 99久久伊人精品| 亚洲成av人片观看| 欧美α欧美αv大片| 国产一区999| 中文字幕日韩av资源站| 在线观看日韩电影| 日韩中文字幕91| 国产喂奶挤奶一区二区三区| a美女胸又www黄视频久久| 亚洲午夜精品在线| 精品剧情在线观看| 成人网在线播放| 亚洲制服丝袜av| 精品国精品国产| 99在线热播精品免费| 亚洲bt欧美bt精品777| 日韩精品在线一区| yourporn久久国产精品| 亚洲国产日韩a在线播放| 精品国产凹凸成av人导航| 成人一区二区三区视频在线观看| 亚洲精品高清在线观看| 日韩欧美一二三四区| 99国内精品久久| 男女男精品视频| 亚洲视频一区二区在线| 日韩色在线观看| 色欧美片视频在线观看在线视频| 七七婷婷婷婷精品国产| 亚洲色图制服丝袜| 精品久久久久久亚洲综合网| 在线观看日韩av先锋影音电影院| 裸体一区二区三区| 一区二区三区不卡视频在线观看| 欧美xxxxxxxxx| 欧美主播一区二区三区| 狠狠色狠狠色综合系列| 亚洲国产日韩在线一区模特| 久久青草欧美一区二区三区| 欧美午夜精品久久久久久超碰| 国产精品一线二线三线精华| 天天影视涩香欲综合网| 日韩理论片在线| 久久久精品tv| 欧美v国产在线一区二区三区| 欧美中文字幕一区二区三区| 成人免费毛片片v| 黄一区二区三区| 秋霞成人午夜伦在线观看| 亚洲综合清纯丝袜自拍| 中文字幕亚洲精品在线观看| 精品成人一区二区三区| 欧美一级免费大片| 欧美日韩国产综合一区二区| 一本色道久久综合狠狠躁的推荐 | 欧美日韩另类一区| 99riav久久精品riav| 成人亚洲一区二区一| 国产在线精品一区二区三区不卡 | 91视频一区二区三区| 国产91精品精华液一区二区三区| 奇米精品一区二区三区在线观看 | 亚洲国产精品天堂| 亚洲欧美色图小说| 亚洲欧洲日韩av| 国产精品福利影院| 亚洲欧洲日产国产综合网| 中文字幕日本乱码精品影院| 国产精品精品国产色婷婷| 国产精品久久久久久久久晋中 | 日本午夜精品一区二区三区电影| 亚洲一区电影777| 一区二区三区91| 亚洲国产精品自拍| 日韩成人一级片| 九色综合国产一区二区三区| 久久国产欧美日韩精品| 国产麻豆精品在线观看| 丁香六月综合激情| 99精品视频在线免费观看| 日本精品免费观看高清观看| 欧美亚洲图片小说| 日韩欧美一区在线| 久久久99精品免费观看| 亚洲视频一区在线| 丝袜a∨在线一区二区三区不卡 | 国产精品每日更新| 亚洲另类在线一区| 日韩综合小视频| 国产成人自拍高清视频在线免费播放| 国产成人三级在线观看| 99久久精品费精品国产一区二区| 91国偷自产一区二区开放时间 | 中文字幕制服丝袜成人av| 自拍偷拍欧美精品| 午夜成人免费电影| 国产精品亚洲а∨天堂免在线| 成人精品视频一区二区三区尤物| 欧美在线免费视屏| 精品毛片乱码1区2区3区| 亚洲欧洲日韩在线| 麻豆一区二区三| 99re这里只有精品6| 欧美一卡二卡三卡四卡| 最新久久zyz资源站| 人人爽香蕉精品| 色综合亚洲欧洲| 精品美女一区二区| 亚洲国产日韩在线一区模特| 国产一区视频网站| 欧美日韩久久久| 中文字幕一区二区三区乱码在线| 日韩国产高清影视| 欧美影院精品一区| 中文字幕免费不卡在线| 日本成人在线网站| 日本高清不卡aⅴ免费网站|