La carga de archivos es una función muy común en el sitio web. Debe analizar los parámetros de solicitud directamente utilizando servlet para obtener archivos cargados, lo cual es bastante problemático. Por lo tanto, generalmente elige utilizar la herramienta de código abierto Apache, Common-FileUppload. Este paquete JAR se puede encontrar en el sitio web oficial de Apache, o en la carpeta LIB de los puntales. La función de la carga de Struts se basa en esta implementación.
Common-FileUpload depende del paquete Common-IO, por lo que también debe descargar este paquete. Luego importárelo en su ruta de proyecto.
Use el código de la siguiente manera
paquete oop.hg.ytu.servlet; import java.io.file; import java.io.ioException; import java.io.inputstream; import java.util.list; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import oop.hu.ytu.dao.uploaddomain; importar org.apache.commons.fileUpload.fileitem; importar org.apache.commons.fileupload.disk.diskfileitemFactory; importar org.apache.commons.fileUpload.servlet.servletFileUpload; La carga de clase pública se extiende httpservlet { / *** manejar la solicitud de carga de usuario* / private static final long serialversionUid = 1l; public void doget (HTTPServletRequest Solicitud, respuesta httpservletResponse) lanza ServLetException, ioException {// string describe = request.getParameter ("describir"); DiskFileItemFactory fábrica = new DiskFileItemFactory (); @SupessWarnings ("Deprecation") String Path = request.getRealPath ("/upload"); // Establecer la ruta de búfer de disco fábrica.setRepository (nuevo archivo (ruta)); Factory.SetSizethReshold (1024*1024); // Establecer el tamaño de búfer Crear buffer ServletFileUpload upload = new ServLetFileUpload (fábrica); upload.setsizeMax (-1); // Establezca el tamaño de límite de archivo de carga, -1 ilimitado intento {@SupplessWarnings ("sin verificar") Lista <StilEitem> list = upload.parserequest (request); Cadena va = null; for (fileitem item: list) {// String name = item.getFieldName (); if (item.isformfield ()) {// juzga si es un archivo stream va = item.getString ("utf-8"); // System.out.println (nombre+"="+VA); /// request.setAttribute (nombre, valor); } else {string value = item.getName (); // pasará el nombre de ruta completa int inicio = value.lastIndexof ("//"); Cadena filename = value.substring (inicio+1); // request.setAttribute (nombre, nombre de archivo); InputStream in = item.getInputStream (); Cargardomain dao = new uploaddomain (); //item.write(new File (RealPath, FileName)); int index = filename.lastIndexOf ("."); Cadena realFileName = FileName.Substring (0, índice); String type = filename.substring (índice+1); dao.insert (in, realFileName, type, VA); // Pon en la base de datos}}} Catch (Exception e) {E.PrintStackTrace (); }} public void dopost (httpservletRequest solicitud, respuesta httpservletResponse) arroja servletException, ioexception {doget (solicitud, respuesta); }} Aquí determinamos si es la transmisión o parámetros cargados en el formulario, como enviar información en el cuadro de texto, y luego insertarlos en la base de datos. El código de inserción de la base de datos es el siguiente
paquete oop.hu.ytu.dao; import java.io.inputstream; import java.sql.connection; import java.sql.preparedStatement; import java.sql.resultset; import oop.hg.ytu.utils.jdbcutils; /*** Proporcionar soporte de carga de archivos* @author administrador**/public class ifoteDomain {/*** Ponga el archivo cargado en la base de datos*/public void Insert (InputStream in, String FileName, String Type, String Describe) Excepción {// Escribir una imagen con la conexión DataBase Conn = Null; Preparado PS = NULL; ResultSet rs = null; System.out.println (describir); intente {// 2. Establezca una conexión conn = jdbcutils.getConnection (); // 3. Cree una cadena de instrucción sql = "insertar en fileUpload (archivo, nombre de archivo, type, des) valores (?,?,?,?)"; ps = conn.preparestatement (SQL); Ps.Setblob (1, in); Ps.SetString (2, nombre de archivo); Ps.Setstring (3, tipo); Ps.Setstring (4, describir); // 4. Ejecutar la declaración Ps.ExecuteUpdate (); cercar(); } finalmente {jdbcutils.free (rs, ps, conect); }}} Puede encontrar el límite de tamaño de la pregunta de precio de la base de datos predeterminada. Debe cambiar la siguiente configuración en My.ini en el directorio de instalación de MySQL.
[mysqld]
max_allowed_packet = 64m
Eso es todo. Por supuesto, preste atención al formato de codificación. Sube el archivo y hazlo. Otra cosa es que uno de los nombres de mis columnas está configurado para describir, y el resultado es que he entrado en conflicto con las palabras reservadas de MySQL, y la información no se puede insertar. Debes prestarle atención en el futuro.
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.