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

springboot上傳文件,url直接訪問資源問題

 更新時間:2022年11月17日 14:50:50   作者:qq_41463655  
這篇文章主要介紹了springboot上傳文件,url直接訪問資源問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

主要解決問題

直接上傳到服務(wù)器的文件是在編譯后的目錄里,是無法通過url 訪問到的

—只演示上傳圖片返回 url 直接訪問

1、上傳文件值項目跟目錄

2、賦值上傳文件目錄讀寫權(quán)限

----以下是layui相關(guān),非layui無視即可

3、Layui --> 數(shù)據(jù)返回格式

4、Layui --> 修改上傳–> 2、上傳文件值項目跟目錄(只修改返回格式)

5、Layui --> Html代碼

6、Layui --> Js上傳文件代碼

效果展示(前臺使用的Layui )

上傳前

上傳后(此處直接使用的上傳后的 url 展示,不是本地文件展示)

url 是可以直接訪問的

1、上傳文件方法

/**
 * 文件上傳
 * @author peter 2018/10/20 21:32
 */
@Controller
public class FileController {

	/**
	 * 上傳路徑
	 */
	private static String UPLOAD_PATH = "File/image/upload";

	/**
	 * 圖片上傳,需要賦值讀寫權(quán)限-->
	 * 
	 * @author wangsong
	 * @date 2019年6月14日 下午2:31:49
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/uploadImage", method = RequestMethod.POST)
	@ResponseBody
	public JSONObject uploadImage(HttpServletRequest request) {
		try {
			MultipartFile image = ((MultipartHttpServletRequest) request).getFile("file");
			String name = image.getOriginalFilename();
			InputStream inputStream = image.getInputStream();
			// 獲得客戶端發(fā)送請求的完整url
			String url = request.getRequestURL().toString();
			// 獲得去除接口前的url
			String urlVal = url.replace("/uploadImage", "");
			// 目錄路徑
			Path directory = Paths.get(UPLOAD_PATH);
			// 判斷目錄是否存在,不存在創(chuàng)建
			if (!Files.exists(directory)) {
				Files.createDirectories(directory);
			}
			// 判斷文件是否存在,存在刪除
			if (Files.exists(directory.resolve(name))) {
				File file = new java.io.File(UPLOAD_PATH + "/" + name);
				file.delete();
			}
			// 拷貝文件
			Files.copy(inputStream, directory.resolve(name));
			// url路徑
			// String path = serverConfig.getUrl() + "/" + UPLOAD_PATH + "/" + name;
			String path = urlVal + "/" + UPLOAD_PATH + "/" + name;
			// layui 數(shù)據(jù)格式返回
			Map<String, Object> jsonObjMap = FileData.jsonObj(path);
			JSONObject resObj = JSONObject.fromObject(jsonObjMap);
			return resObj;
		} catch (Exception e) {

			Map<String, Object> jsonObjMap = FileData.jsonObj(200, "上傳失敗");
			JSONObject resObj = JSONObject.fromObject(jsonObjMap);
			return resObj;
		}
	}


	/**
	 * 使用流將圖片輸出
	 * @param response
	 * @param name
	 * @throws IOException
	 */
	@GetMapping("/getImage/{name}")
	public void getImage(HttpServletResponse response, @PathVariable("name") String name) throws IOException {
		response.setContentType("image/jpeg;charset=utf-8");
		response.setHeader("Content-Disposition", "inline; filename=girls.png");
		ServletOutputStream outputStream = response.getOutputStream();
		outputStream.write(Files.readAllBytes(Paths.get(UPLOAD_PATH).resolve(name)));
		outputStream.flush();
		outputStream.close();
	}
}

2、賦與上傳文件目錄讀寫權(quán)限

package com.hy.wargame.config;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.hy.wargame.interceptor.LoginInterceptor;


/**
 * 項目根目錄下  /File/**
 * @author wangsong
 * @date 2019年4月10日 下午4:21:08
 */
@Configuration
public class MvcConfig implements WebMvcConfigurer {

		/**
	 * 賦值文件讀寫權(quán)限
	 */
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/File/**").addResourceLocations("file:File/");
	}
}

----以下是layui相關(guān),非layui無視即可

3、Layui --> 數(shù)據(jù)返回格式

maven 依賴 json-lib 沒有的加上

	<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
		<!-- jsonObject 支持  -->
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.4</version>
			<classifier>jdk15</classifier>
		</dependency>

layui 要求返回的數(shù)據(jù)格式

package com.hy.wargame.controller.manage.vo;

import java.util.Hashtable;
import java.util.Map;

public class FileData {

	public static Map<String, Object> jsonObj(Object data) {
		Map<String, Object> resObj = new Hashtable<String, Object>();
		resObj.put("code", "0");
		resObj.put("msg", "ok");
		resObj.put("data", data);
		System.out.println(resObj);
		return resObj;
	}

	public static Map<String, Object> jsonObj(int code, String msg) {
		Map<String, Object> resObj = new Hashtable<String, Object>();
		resObj.put("code", code);
		resObj.put("msg", msg);
		resObj.put("data", 0);
		System.out.println(resObj);
		return resObj;
	}
}

4、Layui --> 修改上傳–> 2、上傳文件值項目跟目錄(只修改返回格式)

	// layui 數(shù)據(jù)格式返回,path 為data數(shù)據(jù),返回的值
			Map<String, Object> jsonObjMap = FileData.jsonObj(path);
			JSONObject resObj = JSONObject.fromObject(jsonObjMap);
			return resObj;

完整上傳代碼

@RequestMapping(value = "/uploadImage", method = RequestMethod.POST)
	@ResponseBody
	public JSONObject uploadImage(HttpServletRequest request) {
		try {
			MultipartFile image = ((MultipartHttpServletRequest) request).getFile("file");
			String name = image.getOriginalFilename();
			InputStream inputStream = image.getInputStream();
			// 目錄路徑
			Path directory = Paths.get(UPLOAD_PATH);
			// 判斷目錄是否存在,不存在創(chuàng)建
			if (!Files.exists(directory)) {
				Files.createDirectories(directory);
			}
			// 判斷文件是否存在,存在刪除
			if (Files.exists(directory.resolve(name))) {
				File file = new java.io.File(UPLOAD_PATH + "/" + name);
				file.delete();
			}
			// 拷貝文件
			Files.copy(inputStream, directory.resolve(name));
			// url路徑
			String path = serverConfig.getUrl() + "/" + UPLOAD_PATH + "/" + name;
			// layui 數(shù)據(jù)格式返回
			Map<String, Object> jsonObjMap = FileData.jsonObj(path);
			JSONObject resObj = JSONObject.fromObject(jsonObjMap);
			return resObj;
		} catch (Exception e) {

			Map<String, Object> jsonObjMap = FileData.jsonObj(200, "上傳失敗");
			JSONObject resObj = JSONObject.fromObject(jsonObjMap);
			return resObj;
		}
	}

5、Layui --> Html代碼

         <div class="layui-upload">
           <label  class="layui-form-label">活動圖片:</label>
            <button type="button" class="layui-btn" id="test6">上傳圖片</button>
             <input type="hidden" id="path" name="path" value="">
             <span id="url" ></span>
		     <div class="layui-upload-list" >
		    <img class="layui-upload-img" style="width: 500px;height: 200px;margin-left: 15%"       id="demo1">
		    <p id="demoText"></p>
		  </div>
		 </div> 

說明:

6、Layui --> Js上傳文件代碼

<script>
layui.use(['form', 'layedit', 'laydate','upload'], function(){
  
   var form = layui.form
  ,layer = layui.layer
  ,layedit = layui.layedit
  ,laydate = layui.laydate
  ,upload = layui.upload;
 
  
   //普通圖片上傳
   var uploadInst = upload.render({
     elem: '#test6'
     ,url: '/uploadImage'
     ,before: function(obj){
       //預(yù)讀本地文件示例,不支持ie8
     /*   obj.preview(function(index, file, result){
         $('#demo1').attr('src', result); //圖片鏈接(base64)
       }); */
     }
     ,done: function(res){
       //如果上傳失敗
       if(res.code > 0){
         return layer.msg('上傳失敗');
       }
       //上傳成功
       //后臺保存數(shù)據(jù)庫
       $("#path").val(res.data);
       //顯示url
       $("#url").html(res.data);
       //通過url預(yù)覽服務(wù)器圖片
       $("#demo1").attr("src",res.data);
     }
     ,error: function(){
       //演示失敗狀態(tài),并實現(xiàn)重傳
       var demoText = $('#demoText');
       demoText.html('<span style="color: #FF5722;">上傳失敗</span> <a class="layui-btn layui-btn-xs demo-reload">重試</a>');
       demoText.find('.demo-reload').on('click', function(){
         uploadInst.upload();
       });
     }
   });
 <script>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis查詢數(shù)據(jù)返回null的解決

    MyBatis查詢數(shù)據(jù)返回null的解決

    本文主要介紹了MyBatis查詢數(shù)據(jù)返回null的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-02-02
  • Java數(shù)組隊列概念與用法實例分析

    Java數(shù)組隊列概念與用法實例分析

    這篇文章主要介紹了Java數(shù)組隊列概念與用法,結(jié)合實例形式分析了Java數(shù)組隊列相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • Spring Boot 如何使用Liquibase 進行數(shù)據(jù)庫遷移(操作方法)

    Spring Boot 如何使用Liquibase 進行數(shù)據(jù)庫遷移(操作方法)

    在Spring Boot應(yīng)用程序中使用Liquibase進行數(shù)據(jù)庫遷移是一種強大的方式來管理數(shù)據(jù)庫模式的變化,本文重點講解如何在Spring Boot應(yīng)用程序中使用Liquibase進行數(shù)據(jù)庫遷移,從而更好地管理數(shù)據(jù)庫模式的變化,感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • 一文帶你搞懂Java中線程的創(chuàng)建方式

    一文帶你搞懂Java中線程的創(chuàng)建方式

    這篇文章主要為大家詳細介紹了Java中線程的創(chuàng)建方式的相關(guān)知識,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • Hibernate的一對一,一對多/多對一關(guān)聯(lián)保存的實現(xiàn)

    Hibernate的一對一,一對多/多對一關(guān)聯(lián)保存的實現(xiàn)

    本文主要介紹了Hibernate的一對一,一對多/多對一關(guān)聯(lián)保存的實現(xiàn),文中通過示例代碼介紹的很詳細,感興趣的可以了解一下
    2021-09-09
  • java暴力匹配及KMP算法解決字符串匹配問題示例詳解

    java暴力匹配及KMP算法解決字符串匹配問題示例詳解

    這篇文章主要為大家介紹了java算法中暴力匹配算法及KMP算法解決字符串匹配的問題示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • idea顯示properties文件中文亂碼的解決方法

    idea顯示properties文件中文亂碼的解決方法

    在項目中通常會遇到如下問題,突然properties文件中文亂碼,本文主要介紹了idea顯示properties文件中文亂碼的解決方法,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java中的匿名對象定義與用法實例分析

    Java中的匿名對象定義與用法實例分析

    這篇文章主要介紹了Java中的匿名對象定義與用法,結(jié)合實例形式分析了java匿名對象的概念、原理、定義與相關(guān)使用注意事項,需要的朋友可以參考下
    2019-08-08
  • java基于Apache FTP實現(xiàn)文件上傳、下載、修改文件名、刪除

    java基于Apache FTP實現(xiàn)文件上傳、下載、修改文件名、刪除

    本篇文章主要介紹了Apache FTP實現(xiàn)文件上傳、下載、修改文件名、刪除,實現(xiàn)了FTP文件上傳(斷點續(xù)傳)、FTP文件下載、FTP文件重命名、FTP文件刪除等功能,有需要的可以了解一下。
    2016-11-11
  • Spring MVC 處理Ajax請求的方式詳解

    Spring MVC 處理Ajax請求的方式詳解

    本文介紹了在SpringMVC中處理Ajax請求的方法,主要依賴于Controller和返回類型的配置,使用@RequestMapping注解處理Ajax的控制器方法,本文給大家介紹Spring MVC 處理Ajax請求的方式,感興趣的朋友跟隨小編一起看看吧
    2024-09-09

最新評論

义马市| 利津县| 仁布县| 孝义市| 十堰市| 沙田区| 万源市| 历史| 栾川县| 洪雅县| 永平县| 庆城县| 洛扎县| 阿坝县| 娱乐| 西畴县| 泾川县| 迭部县| 高雄市| 万山特区| 汕头市| 华坪县| 焦作市| 四子王旗| 屯留县| 八宿县| 白山市| 酒泉市| 峡江县| 清苑县| 江达县| 东乌珠穆沁旗| 阿城市| 类乌齐县| 邹城市| 鹿泉市| 桑植县| 错那县| 高邑县| 乌兰浩特市| 金乡县|