Como fazer upload e baixar arquivos no fundo do trampolim?
Um projeto recente envolveu o upload e download de arquivos. O upload do front-end usa o plug-in webuploader do Baidu. O uso deste plug-in ainda está em pesquisa e será resolvido e gravado no futuro. Este artigo apresenta principalmente o processamento do upload de arquivos e download no plano de fundo do trampolim.
Upload de arquivo único
// Upload de arquivo único @RequestMapping (value = "/upload")@ResponseBodyPublic String upload (@RequestParam ("FILE") FILETFILE FILE) {try {if (file.isEmpty ()) {return file está vazio "; } // obtenha o nome do arquivo string filename = file.getoriginalfilename (); Logger.info ("O nome do arquivo carregado é:" + nome do arquivo); // Obtenha o nome do sufixo do arquivo string sufixName = filename.substring (filename.lastIndexof (".")); Logger.info ("O nome do sufixo do arquivo é:" + sufixName); // Defina o caminho de armazenamento do arquivo string filepath = "d: // AIM //"; String Path = FilePath + FileName + SuffixName; Arquivo dest = novo arquivo (caminho); // detecta se o diretório existe se (! DeSt.getParentFile (). Exist ()) {Dest.getParentFile (). Mkdirs (); // Crie uma nova pasta} file.transfer para (dest); // Escreva o arquivo para retornar "carregado com sucesso"; } catch (ilegalStateException e) {E.printStackTrace (); } catch (ioexception e) {e.printStackTrace (); } retornar "Falha no upload";}Se você deseja modificar o caminho e o nome do arquivo, basta modificar o FilePath e o nome do arquivo.
Vários uploads de arquivo
// upload de vários arquivos @RequestMapping (value = "/uploadmore", método = requestMethod.post) @ResponseBodyPublic String handleFileUpload (httpServleTrequest Request) {list <multipartfile> files = ((multiparttttpSleTrequest)). Arquivo multipart -arquivo = nulo; Fluxo bufferedoutputStream = null; for (int i = 0; i <files.size (); ++ i) {file = files.get (i); String filepath = "d: // AIM //"; if (! file.isempty ()) {tente {byte [] bytes = file.getBytes (); Stream = new BufferedOutputStream (new FileOutputStream (novo arquivo (filepath + file.getoriginalfilename ()))); // Defina o caminho do arquivo e o nome do fluxo.Write (bytes); // grava como stream.close (); } catch (Exceção e) {stream = null; retornar "th" + i + "upload de arquivo falhado ==>" + e.getMessage (); }} else {return "th" + i + "upload falhou porque o arquivo está vazio"; }} retornar "Carregado com sucesso";}Download do arquivo
// download de arquivos Código relacionado @RequestMapping ("/Download") public String DownloadFile File (httpServletRequest Solicy, httpServletResponse resposta) {string filename = "AIM_TEST.TXT"; // Defina o nome do arquivo e substitua -o pelo nome do arquivo a ser download de acordo com as necessidades de negócios se (fillenMe! novo arquivo (RealPath, FileName); if (file.exists ()) {Response.SetContentType ("Application/Force-download"); // Defina o download forçado sem a abertura da resposta.AddHeader ("Content-Disposition", "Applement; Filename =" + FileName); // Defina o nome do arquivo byte [] Buffer = novo byte [1024]; FileInputStream fis = null; BufferInputStream bis = null; tente {fis = new FileInputStream (arquivo); bis = new bufferinputStream (fis); OutputStream OS = Response.getOutputStream (); int i = bis.read (buffer); while (i! = -1) {os.Write (buffer, 0, i); i = bis.read (buffer); } System.out.println ("Sucesso"); } catch (Exceção e) {e.printStackTrace (); } finalmente {if (bis! = null) {tente {bis.close (); } catch (ioexception e) {e.printStackTrace (); }} if (fis! = null) {try {fis.close (); } catch (ioexception e) {e.printStackTrace (); }}}}} retornar null;}Configuração multipartconfig
Você pode usar a classe de configuração multipartconfig para controlar os uploads de arquivo globalmente.
@ConfigurationPublic Classe MultipartConfig {@Bean public MultipartConfigElement MultipartConfigElement () {MultipartConfigFigFactory Factory = new MultipartConfigFactory (); // Defina o limite de tamanho do arquivo, se a página exceder esse tamanho, as informações de exceção serão lançadas fábrica.setMaxFilesize ("2MB"); // kb, mb // Defina o total de dados de dados total carregado fábrica.setMaxRequestSize ("20MB"); // Defina o caminho da pasta temporária do arquivo // factory.setLocation ("e: // test //"); // Se o arquivo for maior que esse valor, ele será armazenado como um arquivo. Se for menor que esse valor, o arquivo será armazenado na memória. O padrão é 0 // factory.setMaxRequestSize (0); retornar factory.createmultipartConfig (); }}Coisas a serem observadas
O formato de transferência de arquivo frontal e traseiro deve ser multipart/formulário
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.