各位看官可以關注博主個人博客,了解更多信息。
作者:Surpasser
鏈接地址:https://surpass.org.cn
前言
我的畢設項目中涉及到了多媒體表單提交,以我本來的想法是希望把上傳的圖片文件存在我的項目中,數據庫中只需要存在一個獨一無二的圖片名字,這樣就不會因為項目的移動而需要修改圖片的實際路徑。
當我完成信息修改的方法是發現我所上傳的圖片並沒有顯示出來。
這個問題想了很久,我的圖片路徑是對的,圖片名字也是對的,查看源代碼也是404,但是當我去復制已經在項目中存在圖片到數據庫確是可以在頁面出來,百思不得其解。偶然間得到了靈感,突然看到我項目中的圖片數量和本地磁盤中的圖片數量不一致,恍然大悟,原本項目中有自己復制的圖片,經過編譯后是存在與class中的,后期項目啟動時上傳的圖片上傳到項目的源代碼項目中,很明顯時無法拿到的。
解決辦法
1.我在項目中properties配置文件中指定了本地磁盤的項目圖片路徑,通過配置映射項目中圖片路徑。
2.通過配置類指定映射圖片路徑。
package com.zhouli.gd.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Value("${spring.servlet.multipart.location}")
private String storageRootFolder;
@Value("${spring.servlet.asset.virtual.path}")
String virtualPath;
/***
* 配置圖片等資源虛擬路徑
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(virtualPath).addResourceLocations("file:" + storageRootFolder);
super.addResourceHandlers(registry);
}
}
3.按照原來的想法數據庫中只存放圖片名,通過訪問修改頁面。。。
尾言:這是第一次以Springboot+Mybatis架構做一個畢業設計,原先一直時SSM+eclipse做的項目練手,此前配置圖片的映射路徑只需要在tomcat中配置。
方法一:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<!-- 設置圖片虛擬路徑[訪問時路徑為/photo] -->
<Context path="/photo" docBase="D:\upFiles" reloadable="true" />
<!-- 也可以這樣設置圖片虛擬路徑 -->
<Host name="10.0.0.123" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="F:\temp" reloadable="false" ></Context> </Host>
方法二: