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

解決@PathVariable對(duì)于特殊字符截?cái)嗟膯?wèn)題

 更新時(shí)間:2021年02月24日 08:38:09   作者:往前的娘娘  
這篇文章主要介紹了解決@PathVariable對(duì)于特殊字符截?cái)嗟膯?wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

概述:

@ResponseBody
 @RequestMapping(value="/download/{fileName:[a-zA-Z0-9\\.\\-\\_]+}", method = RequestMethod.GET)
 public void downloadAmr( HttpServletRequest request, HttpServletResponse response, @PathVariable("fileName") String fileName) {
 response.setContentType("application/octet-stream");
 String dir = System.getProperty("catalina.home"); //獲得tomcat所在的工作路徑 
 System.out.println("tomcat路徑=" + dir); 
 //獲取到存儲(chǔ)了文件存儲(chǔ)位置的filedir.properties 文件路徑 
 String dir2 = dir.substring(0, dir.length()) + File.separator +"webapps" + File.separator + "ROOT" + File.separator + fileName; 
 File file = new File(dir2);
 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
 byte[] buffer = new byte[1024]; 
 int len; 
 try { 
 InputStream inputStream = new FileInputStream(file);
 while ((len = inputStream.read(buffer)) > -1 ) { 
 byteArrayOutputStream.write(buffer, 0, len); 
 } 
 byteArrayOutputStream.flush(); 
 response.getOutputStream().write(byteArrayOutputStream.toByteArray());
 } catch (FileNotFoundException e) {
 logger.error("讀取文件異常", e);
 } catch (IOException e) { 
 logger.error(e.getMessage(), e); 
 } 
 logger.info("下載進(jìn)入。。。。。。。。。。。。。。。。。");
 }

總結(jié):

1、默認(rèn)值情況下 /download/{fileName}, 然后 @PathVariable("fileName"),

如果路徑為/download/1.jpg的話,那么 fileName=1 而不是1.jpg,問(wèn)題就是默認(rèn)對(duì)于字符._-相關(guān)進(jìn)行截?cái)嗔恕?/p>

2、解決方法就是

{fileName:[a-zA-Z0-9\\.\\-\\_]+}

用正則表達(dá)式表示這些字符不能被截?cái)唷?/p>

補(bǔ)充:Springboot用@PathVariable傳參,最后一個(gè)參數(shù)會(huì)丟失小數(shù)點(diǎn)后面的部分

當(dāng)使用@PathVariable傳遞路徑參數(shù)時(shí),竟然神奇的發(fā)現(xiàn),后面一位參數(shù)的小數(shù)點(diǎn)后面部分竟然不見(jiàn)啦,如下代碼:

Controller方法注解如下:

@RequestMapping(value = "/user/findPassword/{email}", method = RequestMethod.GET, produces="application/json")

我這里是想傳遞個(gè)郵箱過(guò)來(lái)的,然后就發(fā)現(xiàn)了沒(méi)有郵箱后綴。

百思不得其解,遂百度之,解決方法如下:

@RequestMapping(value = "/user/findPassword/{email:.+}", method = RequestMethod.GET, produces="application/json")

在參數(shù)后面添加個(gè)冒號(hào)和一個(gè)小數(shù)點(diǎn)在加上一個(gè)加號(hào):{email:.+}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

最新評(píng)論

邵武市| 招远市| 阳西县| 佳木斯市| 禹州市| 雷波县| 巴里| 新邵县| 璧山县| 息烽县| 蒲江县| 大兴区| 海晏县| 丹江口市| 全椒县| 哈巴河县| 八宿县| 高要市| 大同县| 临清市| 志丹县| 衡南县| 普兰店市| 茶陵县| 贵定县| 娱乐| 灵璧县| 如东县| 太和县| 启东市| 新建县| 休宁县| 洪洞县| 绥化市| 友谊县| 偃师市| 高邮市| 宽城| 新安县| 星座| 崇左市|