springboot+jersey+tomcat實(shí)現(xiàn)跨域方式上傳文件到服務(wù)器的方式
前言
在服務(wù)器上,當(dāng)我們啟動(dòng)了tomcat,就可以以
http://ip地址:8080/文件路徑/文件名
的方式,進(jìn)行訪問到我們服務(wù)器上處于tomcat的webapps文件夾下的文件
如圖:
上面我是用的
http://47.92.53.108:8080/IMG/img04.jpg
進(jìn)行訪問文件
于是為了可以往上面加文件,我們有兩種方式,一種就是直接復(fù)制文件到路徑上,
另一種自然是通過代碼的方式,調(diào)用接口往上面上傳文件
準(zhǔn)備工作
首先你得安裝tomcat
安裝完成后后啟動(dòng)
然后,需要注意的是,為了讓我們能夠訪問文件,那么我們需要做這么一件事,開放服務(wù)器的安全策略
把端口8080放開
為了能夠成功上傳文件,需要放開tomcat的寫權(quán)限,
即解決報(bào)錯(cuò)returned a response status of 405 Method Not Allowed
在tomcat的conf文件夾,找到web.xml文件,添加如下代碼
<!-- 使得服務(wù)器允許文件寫入。--> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param>
注意,該代碼需要在servlet
標(biāo)簽內(nèi)部添加,即:
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <!-- 使得服務(wù)器允許文件寫入。--> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
加完代碼記得重啟tomcat
上傳文件代碼
在pom.xml文件加入代碼:
<!-- 跨域上傳依賴--> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.18.1</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.18.1</version> </dependency>
@PostMapping("/upLoadImg") @ResponseBody public String upLoadImg(MultipartFile myfile){ String path = "http://服務(wù)器公網(wǎng)ip:8080/tomcat的webapps下的文件夾名稱/"; //為上傳到服務(wù)器的文件取名,使用UUID防止文件名重復(fù) String type= myfile.getOriginalFilename().substring(myfile.getOriginalFilename().lastIndexOf(".")); String filename= UUID.randomUUID().toString()+type; try{ //使用Jersey客戶端上傳文件 Client client = Client.create(); WebResource webResource = client.resource(path +"/" + URLEncoder.encode(filename,"utf-8")); webResource.put(myfile.getBytes()); System.out.println("上傳成功"); System.out.println("圖片路徑==》"+path+filename); }catch(Exception ex){ System.out.println("上傳失敗"); } return "上傳成功"; }
以上會(huì)
隨機(jī)生成uuid
作為文件名
如果想保留原本文件名稱,參考如下代碼
有一個(gè)需要注意的是:如果以原文件名命名
進(jìn)行上傳,文件名不能包含中文
否則會(huì)報(bào)錯(cuò)400
@PostMapping("/upLoadImg") @ResponseBody public String doRemoteUpload(@RequestParam("file")MultipartFile file){ String path = "http://服務(wù)器公網(wǎng)ip:8080/tomcat的webapps下的文件夾名稱/"; String filename= file.getOriginalFilename(); try{ Client client = Client.create(); WebResource webResource = client.resource(path +"/" + filename); webResource.put(file.getBytes()); }catch(Exception ex){ return "上傳文件失敗:"+path+"/"+filename; } return "上傳文件成功:"+path+"/"+filename; }
導(dǎo)入的import為:
import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource;
刪除服務(wù)器文件
@GetMapping("/deleteUploadImg") @ResponseBody public ResultVO deleteUploadImg(){ String path = "http://服務(wù)器公網(wǎng)ip:8080/tomcat的webapps下的文件夾名稱/文件名"; try{ Client client = Client.create(); WebResource webResource = client.resource(path); webResource.delete(); }catch(Exception ex){ return "刪除文件失敗:"+path+"/"+filename+ ex.getMessage(); } return "刪除文件成功:"+path+"/"+filename; }
如果需要 刪除文件
只需要把文件的路徑傳入
并且使用WebResource
的delete
方法即可
結(jié)語
以上就是直接通過tomcat跨域上傳文件到服務(wù)器的方式
到此這篇關(guān)于springboot+jersey+tomcat實(shí)現(xiàn)跨域方式上傳文件到服務(wù)器的文章就介紹到這了,更多相關(guān)springboot跨域方式上傳文件到服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)優(yōu)酷視頻地址解析示例代碼分享
最近做了一個(gè)在線視頻的下載器,需要解析youku的視頻,獲得真正的視頻地址,現(xiàn)在把解析過程記錄下來以供參考2014-01-01MybatisPlus 主鍵策略的幾種實(shí)現(xiàn)方法
MybatisPlus-Plus支持多種主鍵生成策略,可以通過@TableId注解的type屬性配置,主要策略包括AUTO、INPUT、ASSING_ID、ASSING_UUID和NONE,每種策略適用于不同的場景,下面就來介紹一下2024-10-10Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例
這篇文章主要介紹了Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例,幫助大家更好的理解和學(xué)習(xí)使用Spring Cloud,感興趣的朋友可以了解下2021-03-03JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法
這篇文章主要介紹了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法,實(shí)例分析了java爬蟲的兩種實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07Java16新特性record類使用細(xì)節(jié)示例詳解
這篇文章主要為大家介紹了Java16新特性record類使用細(xì)節(jié)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Mybatis-Plus同時(shí)使用邏輯刪除和唯一索引的問題及解決辦法(報(bào)數(shù)據(jù)重復(fù)Duplicate entry的
在開發(fā)中,我們經(jīng)常會(huì)有邏輯刪除和唯一索引同時(shí)使用的情況,但當(dāng)使用mybatis plus時(shí),如果同時(shí)使用邏輯刪除和唯一索引,會(huì)報(bào)數(shù)據(jù)重復(fù)Duplicate entry的問題,如何解決這個(gè)問題呢,小編給大家分享Mybatis-Plus同時(shí)使用邏輯刪除和唯一索引的問題及解決辦法,一起看看吧2023-11-11