El paquete JAR de Commons-FileUppload proporcionado por Apache es realmente muy simple de cargar archivos. Recientemente, tengo que usar Servlet/JSP para hacer una función de carga de imágenes. He encontrado mucha información en línea, la mayoría de las cuales se introducen en función del marco de Struts. Aunque algunos de ellos también introducen la carga de plenas comunes, esos ejemplos son relativamente antiguos y algunas categorías ahora están abandonadas.
A través de la investigación y el resumen del estudio, la función de carga finalmente se ha completado. Déjame compartirlo contigo a continuación.
Escenarios de casos
Una interfaz de administración de backend de la biblioteca necesita proporcionar la función de cargar imágenes de libros y finalmente mostrarla en la página.
Darse cuenta del efecto
Ingrese la página de adición del libro, y la imagen predeterminada se muestra "aún no hay avance" (tanto la longitud como el ancho son 200px), y se proporciona un botón a "cargar imagen", como se muestra en la siguiente imagen.
Haga clic en el botón "Cargar imagen" y la interfaz de carga aparece a través de la ventana de modo, como se muestra en la figura a continuación.
Seleccione la imagen especificada a través del botón "Examinar", haga clic en el botón "Cargar" para cargar. Si la carga es exitosa, aparecerá un aviso exitoso. Después de que el usuario haga clic en "Aceptar", cierra la ventana emergente y muestra automáticamente la nueva imagen en la página, como se muestra en la figura a continuación.
Implementación del código
①First Crear un libro Agregue Página: bookAdd.jsp
La etiqueta oculta con la ID de página Photo_ID se usa para almacenar la ruta de imagen, que es conveniente para enviar al fondo y almacenada en la base de datos, y la etiqueta <IMG> con la ID de IMG_ID se usa para mostrar las imágenes. Todas las imágenes se almacenan debajo del servidor para una fácil lectura. Luego, una tecla JS, haga clic en el botón Para aparecer en la página de carga a través de la ventana de modo. Cuando aparece la ventana de modo, se define una victoria variable, que se utiliza para obtener el valor de la ruta de imagen transmitido por la ventana de modo.
(Nota: debido a problemas de seguridad, las imágenes no se pueden almacenar a voluntad. Si el proyecto se implementa en el servidor, las imágenes solo se pueden ver en el servidor. Si debe leer imágenes que no están debajo del servidor actual, debe configurar el directorio virtual del servidor)
<html> <fead> <title> agregue el libro </title> <script type = "text/javascript"> // abre la función de carga de carga openUpload () {var win = window.showmodalDialog ("<%= root%>/admin/bookUpload.jsp", "", "dialogwidInt: 300px; dialogheight: 300px; if (win! = null) {document.getElementById ("Photo_id"). Value = win; document.getElementById ("img_id"). src = "<%= root%>/"+win; }} </script> </head> <body> <h5> agregue el libro </h5> <hr/> <p> portada del libro: <label> <input type = "Hidden" id = "Photo_id" name = "Photo" Value = "Images/noimg.png"> <input type = "botón" OnClick = "OpenUpload ()" Value = "Subload Image"/> <BR/<BR/iMg/iMg id = "img_id" src = "<%= root%>/images/noimg.png"> </label> </body> </html> ② Create la página de imagen de carga, bookupload.jsp
Tenga en cuenta que debe definir la etiqueta <sase>. Los datos se pueden devolver a la forma principal cuando la ventana del modo actual está cerrada. La etiqueta <Form> también debe establecer una propiedad enctype = "multipart/formy-data" para que los archivos enviados puedan obtenerse por el fondo. Haga clic en el botón "Cargar" para transmitir los archivos al fondo. El punto destacado restante es el procesamiento de carga de fondo.
<html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = gbk"> <meta http-equiv = "pragma" content = "no-cache"/> <span style = "color: #ff000000;"> <base objetivo = "_ spán <H5> IMPRESE SUPERGA </h5> <hr/> <p style = "color: rojo"> $ {requestscope.errormsg} </p> <form de formato = "form1" name = "form1" action = "<%= root%>/bookservlet? type = bookUpload" método = "post" enchype = "multipart/data"> <div> nota: the Maximum tea de bookUpload "Method" 3M! </div> <div> <input type = "file" name = "file_upload"/> </div> <div> <input type = "subt" value = "upload"/> </div> </form> </body> </html> ③ Cree un servlet ordinario, solo algunos de los códigos clave se proporcionan a continuación
La parte del código rojo es el código clave cargado, y los otros se usan como adornos. Complete estos tres pasos y se logrará una carga simple.
Public Class BookServlet extiende httpservlet {private String uploadPath = "eshop/upload/"; // Directorio para cargar archivos Cadena privada temppath = "eshop/uploadTmp/"; // directorio de archivos temporal String String serverPath = null; Private int SizEmax = 3; // Imagen máximo Límite superior String private [] fileType = new String [] {". Jpg", ". Gif", ". Bmp", ". Png", ". Jpeg", ". ICO"}; public void doget (httpservletRequest solicitud, respuesta httpservletResponse) arroja servletException, ioexception {serverPath = getServletContext (). getRealPath ("/"). reemplazar ("//", "/"); // ejecutar cuando se inicializa el servlet. Si el directorio de archivos cargado no existe, creará automáticamente si (! New File (ServerPath+uploadPath) .IsDirectory ()) {nuevo archivo (ServerPath+uploadPath) .mkdirs (); } if (! New File (ServerPath+TEMPPATH) .ISDIRectory ()) {nuevo archivo (ServerPath+TEMPPATH) .MKDIRS (); } <span style = "color: #ff0000;"> diskfileitemFactory fábrica = new DiskFileItemFactory (); </span> factory.setsizethreshold (5*1024); // Cache máximo factory.setRepository (nuevo archivo (serverpath+temppath))); // directorio de archivos temporal <span style = "color: #ff0000;"> ServletFileUpload upload = new ServletFileUpload (factory); </span> upload.setSizeMax (SISEMAX*1024*1024); // Maximum); </span> upload.setSizeMax (SIZEMAX*1024*1024); // Maximum); </span> upload.setSizeMax (SIZEMAX*1024*1024); // MAXIMUMMUME); </span> upload.setSizeMax (SIZEMAX*1024*1024); // MAXIMUMMUM) Pruebe {<span style = "color: #ff0000;"> List <StilEitem> items = upload.parserequest (request); </span> // Obtener todas las listas de archivos para (fileItem items: elementos) {// get FileName, este nombre de archivo incluye la ruta <span style = "color: #ff0000;"> if (! item.isformfield ()) {</spane> // Nombre de archivo Filen item.getName (). tOlowerCase (); if (filename.endswith (fileType [0]) || fileName.endswith (fileType [1]) || filename.endswith (fileType [2]) || fileName.endswith (fileType [3]) || fileNname.endswith (fileteType [4]) || fileName.endswith (filetype [5]) {string uNeNe Uuid.randomuuid (). ToString (); filePath = serverPath+uploadPath+uuid+filename.substring (filename.lastIndexOf ("."); <span style = "color: #ff0000;"> item.write (nuevo archivo (filepath)); </span> printWriter pw = respuesta.getwriter (); pw.write ("<script> alert ('cargar con éxito'); window.returnvalue = '"+uploadPath+uuid+filename.substring (filename.lastindexof ("."))+"'; window.close (); </script>"); pw.flush (); pw.close (); } else {request.setAttribute ("Errormsg", "Cargar falló, confirme que el archivo cargado existe y es una imagen!"); request.getRequestDIsPatcher ("/admin/bookUpload.jsp"). Foring (solicitud, respuesta); }}}} Catch (Exception e) {E.PrintStackTrace (); request.setAttribute ("Errormsg", "Falló la carga, confirme que el tamaño del archivo cargado no puede exceder"+SizEmax+"M"); request.getRequestDIsPatcher ("/admin/bookUpload.jsp"). Foring (solicitud, respuesta); }}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.