O blogueiro está trabalhando recentemente em um projeto da intranet, onde dados externos podem ser acessados internamente, mas externamente não pode acessar dados internos, o que também faz com que o arquivo não possa ser carregado. Portanto, o blogueiro adota uma abordagem diferente e cria uma pasta no servidor local especificamente para armazenar dados enviados.
Ambiente: JDK, Tomcat
1. Carregue os arquivos na recepção (carregue ajax)
<input type = "arquivo" name = "anexurl" id = "anexurl" múltiplo = "múltiplo"/>
Onde múltiplo = "múltiplo" está configurado para fazer upload de vários arquivos
function uploadfile () {var arquivos = document.getElementById ("anexurl"). arquivos; if (files.length! = 0) {var formData = new FormData (); for (var i = 0; i <files.length; i ++) {var file = files [i]; formData.append (file.name, arquivo); } $ .ajax ({url: 'cdc/public/savefiles', tipo: 'post', cache: false, dados: formData, // esse parâmetro é exclusivo do jQuery e não é serializado, porque não devemos definir que o FILDMET, mas precisamos, mas precisamos, mas precisamos, mas devemos definir que a string deve definir que a string deve definir o formato JSON, mas precisamos passar no processo, que não devemos definir que a string deve definir que a string deve definir que a string deve definir que a string, que deve ser feita, mas a string deve definir que a string deve definir que a string deve definir que a string não deve definir que a string não se sinta. Passado através de contentType: false, sucesso: function (dados) {save (data.data); } else {save (); }}} Aqui precisamos usar o objeto FormData para encapsular o objeto de arquivo. O método Salvar () é usado para salvar o caminho do arquivo retornado após o upload e salvá -lo no banco de dados para facilitar o download.
2. Receba arquivos em segundo plano e envie -os para o servidor
// Carregar vários arquivos, retornar uma coleção de objetos (endereço de anexo, nome) @RequestMapping (value = "savefiles", método = requestMethod.post) @ResponseBody public jsonObjectFiles (httpServletReQuest Solicy, httpservSponse) {JSONObjectjecject = jsonObject, tente {request.SetcharacterEncoding ("UTF-8"); } Catch (UnsupportEdEncodingException e) {E.PrintStackTrace (); } Coleção <parte> partes = null; tente {partes = request.getParts (); } catch (ioexception e) {e.printStackTrace (); } catch (servletexception e) {e.printStackTrace (); } Iterador <Sce> iterator = parts.iterator (); // Coleção de nomes, retornou à lista de primeiro plano <String> list = new ArrayList <> (); while (iterator.hasNext ()) {parte parte = iterator.Next (); // Gere o nome real do arquivo real armazenado (exclusivo) // Não sei por que o upload do arquivo deve conter o nome do arquivo obtido, caso contrário, a sintaxe do nome do arquivo, nome do diretório ou tag de volume está incorreto. Não existe tal restrição no nome da imagem // Nome do arquivo, salve o banco de dados e use -o para exibir o nome da string = part.getName (); String realname = uuid.randomuuid (). Tostring () + nome; list.add (nome + "&&" + realname); ///home/tomcat/apache-tomcat-9.0.1/files string realpath = "d:" + file.separator + "apache-tomcat-8.5.15" + file.separator + "arquivos"; // string realpath = "c:" + file.separator + "xhj224" + file.separator + "software" + file.separator + "apache-tomcat-9.0.1" + file.separator + "arquivos"; // string realpath = file.separator + "home" + file.separator + "tomcat" + file.separator + "apache-tomcat-9.0.1" + file.separator + "arquivos"; Arquivo de arquivo = novo arquivo (realpath); // se o diretório não existir (! File.isdirectory ()) {// crie o arquivo de upload do arquivo file.mkdirs (); } // O caminho real para a sequência de armazenamento de arquivos filepath = realpath + file.separator + realname; tente {parte.Write (filepath); } catch (ioexception e) {e.printStackTrace (); }} jsonObject.put ("dados", lista); retornar jsonObject; } A coleção da lista adiciona uma string emendada pelo nome do arquivo e pelo nome real do arquivo, que é necessário posteriormente. O nome real é evitar conflitos entre vários nomes de arquivos carregados. RealPath é o caminho de economia de arquivos. Diferentes sistemas operacionais têm caminhos diferentes. O RealPath é melhor colocado sob o Tomcat para facilitar a porte de projetos.
Onde o File.separator é o separador do caminho, que pode identificar automaticamente qual sistema operacional é e usa diferentes separadores de caminho (o Windows é '/', Linux é '/'). Finalmente, retorne a lista à recepção.
Este artigo foi compilado em "Resumo das técnicas de operação de upload de Java", e todos são convidados a aprender e ler.
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.