O upload de arquivos é um dos cenários comuns na Internet. A situação mais típica é o upload de avatares, etc. Hoje, vou levar você para fazer um pequeno caso de carregar arquivos na inicialização da primavera.
1. Configuração do pacote POM
Usamos a versão mais recente da Spring Boot 1.5.9, o JDK usa 1.8, tomcat8.0.
<a Parent> <PuerpId> org.springframework.boot </frugiD> <stifactId> Spring-boot-starter-parent </starfactid> <siets> 1.5.9.Release </sipers> </parenties> <penendergies> <nava.version> 1.8 </java.version> </desperties> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <GrupidId> org.springframework.boot </frugiD> <ArtifactId> Spring-Boot-Devtools </ArtifactId> <pptional> true </cptional> </dependency> </dependências>
O Spring-Boot-Starter-Thymeleaf é introduzido como o mecanismo do modelo de página e escreva alguns exemplos simples de upload.
2. Configurações da classe de inicialização
@Springbootapplicationpublic classe fileUploadwebApplication {public static void main (string [] args) lança exceção {springapplication.run (fileUploadwebapplication.class, args); } // TomCat Grande File O upload Reset @Bean Public TomCatembeddedServletLearContainerFactory TomCatembedded () {TomCatembeddedServletContainerFactory Tomcat = novo TomCatEmbedDervLenerContAnerFactory (); tomcat.addconnectorCustomizers ((TomCatConnectorCustomizer) Connector -> {if ((Connector.getProtocolHandler () Instância de abstractttp11Protocol <?>)) {// -1 significa (abustracthttp11Protocol <?>) conector.getProtocolHandler ()). SetmaxSwallowsize (-1); retornar Tomcat; }}O código TomCatEmbedded é resolver o problema da redefinição de conexão ao fazer o upload de arquivos maiores que 10m. Esse conteúdo de exceção também não é capturado pela Globalexception.
Referência detalhada de conteúdo: Tomcat Large File Upload Conexão Redefinir
3. Escreva uma página de front-end
Página de upload
<! Doctype html> <html xmlns: th = "http://www.thymeleaf.org"> <body> <h1> upload de inicialização do arquivo de inicialização </h1> <form método = "post" action = "/upload" "name" name "/" multiplart/formatata "> <input" <input "/" file) "names) type = "submite" value = "submit"/> </morm> </body> </html>
Uma solicitação de postagem muito simples, uma caixa de seleção para selecionar um arquivo e um botão de envio, o efeito é o seguinte:
Página de exibição de resultado do upload:
<! Doctype html> <html lang = "pt" xmlns: th = "http://www.thymeleaf.org"> <body> <h1> bota de mola - status de upload </h1> <div
As renderizações são as seguintes:
4. Escreva a classe de controle de upload
Visite localhost para pular automaticamente para a página de upload:
@GetMapping ("/") public string index () {return "upload";}Carregue o processamento do serviço
@PostMapping ("/upload") public String SingleFileUpload (@RequestParam ("FILE") FILETFILE, Redirectattributes Redirectattributes) {if (file.isempty ()) {Redirectattributes.addflashShashStribute ("Message", "Selecione a FILHE ATO FILHE retornar "Redirecionar: uploadStatus"; } tente {// Obtenha o arquivo e salve -o em algum lugar byte [] bytes = file.getBytes (); Caminho caminho = paths.get (upload_folder + file.getoriginalfilename ()); Files.write (path, bytes); redirectattributes.addflashattribute ("mensagem", "você carregou com sucesso '" + file.getoriginalfileName () + "'"); } catch (ioexception e) {e.printStackTrace (); } Retorne "Redirect:/UploadStatus";}O código acima significa que as informações do arquivo são lidas através do multipartfile, se o arquivo estiver vazio, pule para a página de resultado e forneça um prompt; Se o fluxo de arquivos não estiver vazio e gravado no diretório especificado, o resultado será exibido na página.
MultipartFile é uma classe de encapsulamento para arquivos carregados de mola, que contém informações como fluxos binários e atributos de arquivo. Atributos relevantes também podem ser configurados no arquivo de configuração. As informações básicas de configuração são as seguintes:
spring.http.multipart.enabled = true #default suportado arquivo upload.spring.http.multipart.file-size-lhreshold = 0 #support Arquivo de arquivos para discoMex.spring.http.multipart.location = # sworty springrax spring.http.miT.MILT.MILT.MILT.MILT.MILT.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILET.MILETUR.MILE spring.http.multipart.max-request-size = 10MB # Tamanho máximo de solicitação suportado
Os mais usados são os dois últimos conteúdos de configuração, que limitam o tamanho do upload do arquivo. Se o arquivo exceder o tamanho, uma exceção será lançada ao fazer upload:
Para obter mais informações de configuração, consulte aqui: Propriedades de aplicativos comuns
5. Manuseio de exceção
@ControllerAdvicePublic Classe GlobalexceptionHandler {@ExceptionHandler (multipartxception.class) public string handleError1 (multipartxception e, redirectattributes redirectattributes) {redirectattributes.addflashattribute ("mensagem", e.getCaus (). retornar "redirecionar:/uploadstatus"; }}Defina um @ControllerAdvice para monitorar se o tamanho do arquivo carregado pelo multipart é limitado. Quando essa exceção ocorre, é fornecido um prompt na página front-end. Você pode fazer muitas coisas com o @Controlleradvice, como o manuseio global de exceções unificadas, etc. Os alunos interessados podem descer para aprender sobre isso.
6. Resumo
Esta demonstração simples de fazer upload de arquivos usando a inicialização da mola é concluída. Os alunos interessados podem baixar o código de exemplo e experimentá -lo.
Consulte:
Código de amostra - Github
Exemplo de código de código de código
Resumir
O exposto acima é o que o editor introduziu para você usando a função de upload do arquivo de inicialização do Spring. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!