El blogger recientemente está trabajando en un proyecto Intranet donde se puede acceder a los datos externos internamente, pero externamente no puede acceder a datos internos, lo que también hace que el archivo no pueda cargarse. Por lo tanto, el blogger adopta un enfoque diferente y crea una carpeta en el servidor local específicamente para almacenar datos cargados.
Medio ambiente: JDK, Tomcat
1. Cargar archivos en la recepción (cargar AJAX)
<input type = "file" name = "annexUrl" id = "annexUrl" múltiple = "múltiple"/>
Donde múltiple = "múltiplo" está configurado para cargar varios archivos
function uploadFile () {var files = document.getElementById ("anexoRL"). archivos; if (files.length! = 0) {var formdata = new FormData (); for (var i = 0; i <files.length; i ++) {var file = files [i]; formdata.append (file.name, archivo); } $ .AJAX ({url: 'cdc/public/saveFiles', type: 'post', cache: false, data: formdata, // Este parámetro es exclusivo de jQuery y no es serializado, porque no somos una cadena en formato JSON, pero debemos pasar el archivo de proceso: falso, // debemos establecer contenido: false aquí, de lo contrario, la cadena será la cadena, la cadena será pasada por el archivo, que no se puede pasar por el archivo, que no puede pasar el archivo, que no puede pasar el archivo, que no se puede pasar por el archivo, que no puede pasar el archivo, que no se puede pasar por el archivo, que no puede pasar el archivo, que no se puede pasar por el archivo. ContentType: false, éxito: function (data) {save (data.data); } else {save (); }}} Aquí necesitamos usar el objeto FormData para encapsular el objeto de archivo. El método Save () se usa para guardar la ruta del archivo devuelta después de cargar, y guardarla en la base de datos para descargar fácilmente.
2. Reciba archivos en segundo plano y cárguelos al servidor
// cargar múltiples archivos, devolver una colección de objetos (dirección de archivo adjunto, nombre) @RequestMapping (value = "SaveFiles", Method = requestMethod.post) @ResponseBody public jsonObject SaveFiles (httpServletRequest, respuesta httpservletreponse) {jsonObject jsonObject ( intente {request.setcharacterEncoding ("UTF-8"); } catch (UnsupportedEncodingException e) {E.PrintStackTrace (); } Colección <Parte> Parts = null; intente {Parts = request.getParts (); } catch (ioException e) {E.PrintStackTrace (); } catch (ServLetException e) {E.PrintStackTrace (); } Iterator <Parte> iterator = Parts.Iterator (); // colección de nombres, devuelto a la lista de primer plano <String> list = new ArrayList <> (); while (iterator.hasnext ()) {parte parte = iterator.next (); // Generar el nombre real de archivo real almacenado real (único) // No sé por qué, la carga de archivo debe contener el nombre de archivo obtenido, de lo contrario, la sintaxis del nombre del archivo, el nombre del directorio o la etiqueta de volumen es incorrecta. No existe dicha restricción en la carga de imagen // nombre del archivo, guarde la base de datos y úsela para mostrar la cadena name = parte.getName (); Cadena realName = uuid.randomuuid (). ToString () + name; list.add (nombre + "&&" + RealName); ///home/tomcat/apache-tomcat-9.0.1/files string realpath = "d:" + file.separator + "apache-tomcat-8.5.15" + file.separator + "archivos"; // string realpath = "c:" + file.separator + "xhj224" + file.separator + "software" + file.separator + "apache-tomcat-9.0.1" + file.separator + "archivos"; // string realpath = file.separator + "home" + file.separator + "tomcat" + file.separator + "apache-tomcat-9.0.1" + file.separator + "archivos"; Archivo archivo = nuevo archivo (realPath); // Si el directorio no existe (! File.isDirectory ()) {// Crea el directorio de carga de archivo File.mkdirs (); } // La ruta real a la cadena de almacenamiento de archivos filePath = RealPath + File.separator + RealName; intente {Part.Write (FilePath); } catch (ioException e) {E.PrintStackTrace (); }} jsonObject.put ("datos", lista); return jsonObject; } La colección de la lista agrega una cadena empalmada por el nombre del archivo y el nombre del archivo real, que se necesita más adelante. RealName es para evitar conflictos entre múltiples nombres de archivos cargados. RealPath es la ruta de guardar archivo. Los diferentes sistemas operativos tienen diferentes rutas. RealPath está mejor ubicado bajo Tomcat para facilitar la portada del proyecto.
Donde file.separator es el separador de ruta, que puede identificar automáticamente qué sistema operativo es y usar diferentes separadores de ruta (Windows es '/', Linux es '/'). Finalmente, devuelva la lista a la recepción.
Este artículo se ha compilado en "Resumen de las técnicas de operación de carga Java", y todos son bienvenidos a aprender y leer.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.