欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你Springboot如何實現(xiàn)圖片上傳

 更新時間:2023年07月06日 09:05:22   作者:高級java開發(fā)  
這篇文章主要介紹了教你Springboot如何實現(xiàn)圖片上傳,首先大家明白圖片上傳,需要在數(shù)據(jù)庫定義一個varchar類型的img字段圖片字段,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

1.首先圖片上傳,需要在數(shù)據(jù)庫定義一個varchar類型的img字段圖片字段

2.需要在pom文件加圖片上傳的配置文件

        <!--上傳圖片-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

3.在yml里添加限制圖片大小

#配置mysql的連接
spring:
  #圖片上傳
  servlet:
    multipart:
      enabled: true
      max-file-size: 50MB
      max-request-size: 50MB

4.html頁面定義div

    <div class="form-group">
        <label  class="col-sm-2 control-label">圖片</label>
        <div class="col-sm-10">
            <input name="goodsImg" id="testimg">
            <!-- imgfile  是上傳圖片的參數(shù)  類型是 MultipartFile 文件類型
                     imgfile 必須和后臺 上傳圖片的方法 uploadImg  參數(shù)保持一致 -->
            <input type="file" multiple class="projectfile" accept="image/*" name="imgfile" id="goodsImg">
        </div>
    </div>

js中定義函數(shù) 圖片上傳

<script>
    //上傳圖片
    function uploadImg(url){
        $('#goodsImg').fileinput({
            initialPreview:url,
            //初始化圖片配置:
            initialPreviewConfig: [
                {key: 1, showDelete: false}
            ],
            //是否初始化圖片顯示
            initialPreviewAsData: true,
            language: 'zh', //設(shè)置語言
            uploadUrl: '/user/uploadImg', //上傳的地址
            allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后綴
            showUpload: true, //是否顯示上傳按鈕
            showCaption: false,//是否顯示標(biāo)題
            browseClass: "btn btn-primary", //按鈕樣式
            maxFileCount: 2, //表示允許同時上傳的最大文件個數(shù)
            enctype: 'multipart/form-data',
            validateInitialCount:true,
            previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
            msgFilesTooMany: "選擇上傳的文件數(shù)量({n}) 超過允許的最大數(shù)值{m}!",
        }).on('fileuploaded', function(event, data, previewId, index) {
            alert(data.response.path);//http
            //http://localhost:8080/ssm_bootstrap/upload/1279fabb-5515-44e2-84e8-4a7dd79cc08c.JPG
            var	imgval = "http://"+ location.host+"/"+data.response.path;
            $('#testimg').val(imgval);
        });
    }
</script>

5.圖片上傳工具類

public class FileUtil {
	//上傳
	/**
	 * <pre>uploadFile(上傳)   
	 * 創(chuàng)建人:wrx
	 * 創(chuàng)建時間:2023年3月29日 下午3:21:17    
	 * 修改人:ba
	 * 修改時間:2023年3月29日 下午3:21:17    
	 * 修改備注: 
	 * @param imgfile
	 * @param request
	 * @return</pre>
	 */
	public static String uploadFile(MultipartFile imgfile,HttpServletRequest request){
    	//1、上傳路徑:項目發(fā)布tomcat服務(wù)器
		//D:\workUtilsInstall\apache-tomcat-8.0.0\webapps\week_employee_hzy\\upload
		String path = request.getServletContext().getRealPath("/")+"/upload";
		File file = new File(path);
		if(!file.exists()){//不存在
			file.mkdirs();
		}
		//生成新的文件名稱,原因:防止文件名稱一樣后者上傳的文件會覆蓋前者上傳的文件(前提是文件名稱必須一樣并且在用一個目錄下)
		//生成新的文件名稱,保證文件名稱唯一有兩種方法:
		// 	  1.通過UUID實現(xiàn)文件名稱唯一 (UUID會生成32位字母+數(shù)字唯一的一個字符串)
		//	  2.通過時間戳現(xiàn)文件名稱唯一  (時間戳是毫秒級時間 時間會一直往上加,生成13位數(shù)字)注意只有java生成13位 其他則是10位比如oracle、mysql、php
		//  獲取時間戳
		//long currentTimeMillis = System.currentTimeMillis();
		//System.out.println(currentTimeMillis);
		String uuid = UUID.randomUUID().toString();
		String oldName = imgfile.getOriginalFilename();//1.jpg
		String suffix = oldName.substring(oldName.lastIndexOf("."));
		String newFile = uuid+suffix;
		File file2 = new File(path+"\\"+newFile);
		try {
			imgfile.transferTo(file2);
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "upload/"+newFile;
	}
}

6.Controller層調(diào)用圖片上傳方法

/**
     *
     *調(diào)用圖片上傳工具類
     * @param imgfile
     * @param request
     * @return java.lang.String
     * @author wrx
     * @date 2023/5/17 0017 16:00
     */
    @RequestMapping("uploadImg")
    public String uploadImg(MultipartFile imgfile, HttpServletRequest request){
        String filePath = FileUtil.uploadFile(imgfile, request);
        System.out.println("{\"path\":\"" + filePath + "\"}");
        return "{\"path\":\"" + filePath + "\"}";//可以
    }

訪問這個路徑http://localhost:8080/upload/b54e356b-6dba-48ae-8ea1-27b4dad158b5.png

訪問成功圖片上傳就完成了 

到此這篇關(guān)于教你Springboot如何實現(xiàn)圖片上傳的文章就介紹到這了,更多相關(guān)Springboot圖片上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 分布式下實現(xiàn)配置管理方式

    分布式下實現(xiàn)配置管理方式

    分布式配置管理平臺是為了解決配置管理問題而出現(xiàn)的,它能夠?qū)崟r管理配置信息,確保配置的實時性和高可用性,配置管理平臺通?;谕扑?訂閱模式,客戶端訂閱配置信息,配置中心負(fù)責(zé)推送配置數(shù)據(jù),常見的分布式配置管理平臺包括Apollo、Diamond和Disconf
    2024-12-12
  • Java詳解ScriptEngine接口動態(tài)執(zhí)行JS腳本

    Java詳解ScriptEngine接口動態(tài)執(zhí)行JS腳本

    ScriptEngine是基本接口,其方法必須在本規(guī)范的每個實現(xiàn)中完全起作用。這些方法提供基本腳本功能。 寫入這個簡單接口的應(yīng)用程序可以在每個實現(xiàn)中進(jìn)行最少的修改。 它包括執(zhí)行腳本的方法,以及設(shè)置和獲取值的方法
    2022-08-08
  • maven實現(xiàn)docker自動化部署插件的使用

    maven實現(xiàn)docker自動化部署插件的使用

    本文主要介紹了maven實現(xiàn)docker自動化部署插件的使用,分享給大家,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 最新評論