亚洲情人网-亚洲情人-亚洲欧洲综合-亚洲欧洲自拍-欧美专区亚洲

spring文件上傳大小限制(spring上傳到文件服務器)

  • 生活
  • 2023-04-25 13:25

多條告白如次劇本只需引入一次

零、本篇重心

引見SpringBoot對文獻上傳的機動擺設。引見MultipartFile接口。引見SpringBoot+Thymeleaf文獻上傳demo的調整。引見對文獻典型,文獻名長度等確定本領。一、SpringBoot對文獻處置關系機動擺設

機動擺設是SpringBoot為咱們供給的便當之一,開拓者不妨在不作任何擺設的情景下,運用SpringBoot供給的默許樹立,如處置文獻須要的MultipartResolver。

@Configuration(proxyBeanMethods=false)@ConditionalOnClass({Servlet.class,StandardServletMultipartResolver.class,MultipartConfigElement.class})@ConditionalOnProperty(prefix="spring.servlet.multipart",name="enabled",matchIfMissing=true)@ConditionalOnWebApplication(type=Type.SERVLET)@EnableConfigurationProperties(MultipartProperties.class)publicclassMultipartAutoConfiguration{privatefinalMultipartPropertiesmultipartProperties;publicMultipartAutoConfiguration(MultipartPropertiesmultipartProperties){this.multipartProperties=multipartProperties;}@Bean@ConditionalOnMissingBean({MultipartConfigElement.class,CommonsMultipartResolver.class})publicMultipartConfigElementmultipartConfigElement(){returnthis.multipartProperties.createMultipartConfig();}@Bean(name=DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)@ConditionalOnMissingBean(MultipartResolver.class)publicStandardServletMultipartResolvermultipartResolver(){StandardServletMultipartResolvermultipartResolver=newStandardServletMultipartResolver();multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());returnmultipartResolver;}}Spring3.1之后扶助StandardServletMultipartResolver,且默許運用StandardServletMultipartResolver,它的便宜在乎:運用Servlet所供給的功效扶助,不須要依附任何其余的名目。想要機動擺設奏效,須要擺設spring.servlet.multipart.enabled=true,固然這個擺設默許即是true。關系的擺設樹立在MultipartProperties中,個中字段即是對應的屬性樹立,典范字段有:enabled:能否打開文獻上傳機動擺設,默許打開。location:上傳文獻的偶爾目次。maxFileSize:最大文獻巨細,以字節為單元,默許為1M。maxRequestSize:所有乞求的最大含量,默許為10M。fileSizeThreshold:文獻巨細到達該閾值,將寫入偶爾目次,默許為0,即一切文獻城市徑直寫入磁盤偶爾文獻中。resolveLazily:能否惰性處置乞求,默許為false。咱們也不妨自設置處置的詳細,須要實行MultipartResolver接口。二、處置上傳文獻MultipartFile接口

SpringBoot為咱們供給了MultipartFile宏大接口,讓咱們不妨獲得上傳文獻的精細消息,如原始文獻名,實質典型之類,接口實質如次:

publicinterfaceMultipartFileextendsInputStreamSource{StringgetName();//獲得參數名@NullableStringgetOriginalFilename();//原始的文獻名@NullableStringgetContentType();//實質典型booleanisEmpty();longgetSize();//巨細byte[]getBytes()throwsIOException;//獲得字節數組InputStreamgetInputStream()throwsIOException;//以流辦法舉行讀取defaultResourcegetResource(){returnnewMultipartFileResource(this);}//將上傳的文獻寫入文獻體例voidtransferTo(Filevar1)throwsIOException,IllegalStateException;//寫入指定pathdefaultvoidtransferTo(Pathdest)throwsIOException,IllegalStateException{FileCopyUtils.copy(this.getInputStream(),Files.newOutputStream(dest));}}三、SpringBoot+Thymeleaf調整demo

1、編寫遏制器

/***文獻上傳**@authorSummerday*/@ControllerpublicclassFileUploadController{privatestaticfinalStringUPLOADED_FOLDER=System.getProperty("user.dir");@GetMapping("/")publicStringindex(){return"file";}@PostMapping("/upload")publicStringsingleFileUpload(@RequestParam("file")MultipartFilefile,RedirectAttributesredirectAttributes)throwsIOException{if(file.isEmpty()){redirectAttributes.addFlashAttribute("msg","文獻為空,請采用你的文獻上傳");return"redirect:uploadStatus";}saveFile(file);redirectAttributes.addFlashAttribute("msg","上傳文獻"+file.getOriginalFilename()+"勝利");redirectAttributes.addFlashAttribute("url","/upload/"+file.getOriginalFilename());return"redirect:uploadStatus";}privatevoidsaveFile(MultipartFilefile)throwsIOException{Pathpath=Paths.get(UPLOADED_FOLDER+"/"+file.getOriginalFilename());file.transferTo(path);}@GetMapping("/uploadStatus")publicStringuploadStatus(){return"uploadStatus";}}2、編寫頁面file.html

<htmlxmlns:th="http://www.thymeleaf.org"><!--suppressALL--><htmllang="en"><head><metacharset="UTF-8"><title>文獻上傳界面</title></head><body><div><formmethod="POST"enctype="multipart/form-data"action="/upload"><table><tr><td><inputtype="file"name="file"/></td></tr><tr><td></td><td><inputtype="submit"value="上傳"/></td></tr></table></form></div></body></html>3、編寫頁面uploadStatus.html

<!--suppressALL--><htmlxmlns:th="http://www.thymeleaf.org"><htmllang="en"><head><metacharset="UTF-8"><title>文獻上傳界面</title></head><body><divth:if="${msg}"><h2th:text="${msg}"/></div><div><imgsrc=""th:src="${url}"></div></body></html>4、編寫擺設

server.port=8081spring.servlet.multipart.max-file-size=10MBspring.servlet.multipart.max-request-size=10MB5、擺設假造路途映照

這一步利害常要害的,咱們將文獻上傳到效勞器上時,咱們須要將咱們的乞求路途和效勞器上的路途舉行對應,否則很有大概文獻上傳勝利,但考察波折:

@ConfigurationpublicclassMvcConfigimplementsWebMvcConfigurer{privatestaticfinalStringUPLOADED_FOLDER=System.getProperty("user.dir");@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler("/upload/**").addResourceLocations("file:///"+UPLOADED_FOLDER+"/");}}對應聯系須要本人去設置,即使考察波折,不妨試著打字與印刷以次路途,看看能否缺點和失誤了路途分割符。

提防:即使addResourceHandler不要寫成處置/**,如許會阻擋掉其余的乞求

6、嘗試頁面

實行mvnspring-boot:run,啟用步調,考察http://localhost:8081/,采用文獻,點擊上傳按鈕,咱們的名目目次下展示了mongo.jpg,而且頁面也勝利表露:

四、SpringBoot的Restful作風,歸來url

/***文獻上傳**@authorSummerday*/@RestControllerpublicclassFileUploadRestController{/***文獻名長度*/privatestaticfinalintDEFAULT_FILE_NAME_LENGTH=100;/***承諾的文獻典型*/privatestaticfinalString[]ALLOWED_EXTENSIONS={"jpg","img","png","gif"};/***名目路途*/privatestaticfinalStringUPLOADED_FOLDER=System.getProperty("user.dir");@PostMapping("/restUpload")publicMap<String,Object>singleFileUpload(@RequestParam("file")MultipartFilefile)throwsException{if(file.isEmpty()){thrownewException("文獻為空!");}Stringfilename=upload(file);Stringurl="/upload/"+filename;Map<String,Object>map=newHashMap<>(2);map.put("msg","上傳勝利");map.put("url",url);returnmap;}/***上傳本領*/privateStringupload(MultipartFilefile)throwsException{intlen=file.getOriginalFilename().length();if(len>DEFAULT_FILE_NAME_LENGTH){thrownewException("文獻名勝過控制!");}Stringextension=getExtension(file);if(!isValidExtension(extension)){thrownewException("文獻***不精確");}//自設置文獻名Stringfilename=getPathName(file);//獲得file東西Filedesc=getFile(filename);//寫入filefile.transferTo(desc);returnfilename;}/***獲得file東西*/privateFilegetFile(Stringfilename)throwsIOException{Filefile=newFile(UPLOADED_FOLDER+"/"+filename);if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}if(!file.exists()){file.createNewFile();}returnfile;}/***考證文獻典型能否精確*/privatebooleanisValidExtension(Stringextension){for(StringallowedExtension:ALLOWED_EXTENSIONS){if(extension.equalsIgnoreCase(allowedExtension)){returntrue;}}returnfalse;}/***此處自定?%

猜你喜歡

主站蜘蛛池模板: 国产综合欧美 | 樱花草在线播放 | 欧日韩视频 | 日韩在线视屏 | 亚洲精品视频久久久 | 欧美精品福利 | 婷婷五月情 | 两性视频网| 久久99精品一区二区三区 | 狠狠久久综合伊人不卡 | 日韩第四页 | 亚洲国产成人久久综合碰碰动漫3d | 伊人99综合 | 久久精品大片 | 亚洲视频免费在线看 | 精品国产欧美一区二区三区成人 | 中文字幕免费在线视频 | 日韩欧美不卡一区二区三区 | 日本欧美一区二区三区片 | 国产精品成人一区二区三区 | 国产手机在线小视频免费观看 | 成人羞羞视频免费 | 羞羞影院在线观看 | 九色在线视频观看 | 最新国产一区二区精品久久 | 伊人伊网| 五月天丁香婷婷综合 | 成人羞羞视频免费 | 丁香五香天堂 | 性欧美大战久久久久久久野外黑人 | 伊人久久婷婷丁香六月综合基地 | 亚洲国产精品看片在线观看 | 五月天丁香婷婷开心激情五月 | 国产免费资源高清小视频在线观看 | 九九视频免费精品视频免费 | 亚洲精品欧洲久久婷婷99 | 九色在线播放 | 精品一区二区三区在线成人 | 国产成人久久精品二区三区牛 | 亚洲国产成人久久综合一区77 | 久久久久久久亚洲精品 |