Serie de tutoriales de Struts1.x (8): cargar un solo archivo
La función de carga de archivos en los programas web generalmente usa la etiqueta lt; input type=file....../gt; e ingresa el nombre del archivo que se cargará en la interfaz de usuario que se muestra en el cliente. Los lectores que hayan utilizado JSP/Servlet para procesar archivos cargados por clientes sabrán que no es fácil implementar esta función. Si los lectores han utilizado JSP/Servlet para procesar archivos cargados por el cliente, sabrán que no es fácil implementar esta función, pero Struts nos proporciona un mecanismo para guardar fácilmente los archivos cargados por el cliente en el lado del servidor. >
La biblioteca de etiquetas HTML de Struts proporciona una etiqueta
En Struts, el objeto FormFile representa el archivo cargado. FormFile es en realidad una interfaz, que podemos encontrar en el paquete de carga de Apache struts. La interfaz FormFile tiene los siguientes cinco métodos de uso común
método getInputStream()
Este método se utiliza para obtener el objeto java io InputStream del archivo cargado, desde el cual podemos leer el datos del archivo cargado y se escribe en la ruta especificada por el servidor
Este método se utiliza para obtener el objeto java io InputStream del archivo subido. p>
método getFileData()
Este método se utiliza para colocar todo el contenido del archivo cargado en una matriz de bytes. Si el tamaño del archivo cargado es relativamente pequeño, puede utilizar este método para guardar fácilmente el archivo cargado en una ruta específica en el lado del servidor
método getFileName()
Este método se utiliza para recuperar archivos de java. Obtenga el archivo cargado del objeto io InputStream.
Este método se utiliza para obtener el nombre del archivo cargado (excluyendo la parte del archivo en la ruta del cliente)
Método getFileSize()
Este método se utiliza Obtener el número de bytes del archivo cargado
método destroy()
Este método se utiliza para destruir todos los recursos asociados con el archivo cargado actualmente
El siguiente ejemplo demuestra el uso de este método. >
El siguiente ejemplo demuestra cómo cargar un solo archivo usando la etiqueta
Paso 1 Crear una página JSP de archivo de carga
Crear un archivo jsp uploadFile en el directorio
El código es el siguiente
?lt;@?page?pageEncoding= GBK gt;?lt;@?taglib?uri= ?prefix= gt;?lt;gt;lt;headgt;?lt; titlegt;Subir un solo archivo (el tamaño del archivo no puede exceder M)?lt;/titlegt;lt;/headgt;lt;bodygt;lt; ?Debe agregar enctype=multipart/form data?gt;?lt;in thelt;:formgt ; etiqueta; :form ?enctype= multipart/form data ?action= uploadFile gt;?lt;:file?property= myFile/gt;lt;pgt;?lt; Utilice la etiqueta lt;:filegt; ingrese el nombre del archivo cargado? gt;lt;:submit?value= upload /gt;?lt;/:formgt;lt;/bodygt;?lt;/gt;
Paso 1 Crear una subclase de ActionForm inlt;samples Crear el UploadForm archivo java en el directorio del proyecto gt; directorio sr actionform, el código es el siguiente
?package?actionform; import?apache struts action *; import?apache struts upload FormFile; extends?ActionForm ?{private?FormFile?myFile;?//?Este myFile representa el archivo que se cargará public?FormFile?getMyFile()?{return myFile;?}public.void.setMyFile(FormFile.myFile)?{? this myFile?= ?myFile;?}?}
El primer paso es crear una clase de acción Struts (una subclase de Action). En Struts, la carga de archivos generalmente se maneja en clases de acción de Struts.
Cree un archivo java UploadAction en el
?paquete?acción; import?javax servlet *; import?apache struts action *; ;; import?java io *; import?actionform *; public?class?UploadAction?extends?Action?{?protected?void?saveFile(FormFile?formFile)?throws?¿Obtener la ruta de carga especificada desde el archivo xml web? ?String?path?=??this getServlet() getServletConfig() getInitParameter( uploadPath );?InputStream?in?=?formFile getInputStream();//?¿Obtener el flujo de entrada del archivo cargado? //¿Crear un archivo vacío en la ruta de carga especificada por el servidor (el nombre del archivo es el valor devuelto por el método getFileName())?//?Comience a escribir datos en el archivo recién creado en la ruta de carga, escribiendo k palabras cada sección de tiempo; while((count?=?in read(buffer))? gt;?) {?fout write(buffer count);?fout close() formFile destroy();//?Destruye el archivo cargado actualmente. después de cargar exitosamente el recurso}?public.ActionForward.execute(ActionMapping?mapping?ActionForm?form?HttpServletRequest?request?HttpServletResponse?response)?{?UploadForm?uForm?=?(UploadForm)?form;?PrintWriter?out?=? null; ?try?{?response setCharacterEncoding(GBK);?out?=?response getWriter();?saveFile(uForm getMyFile());?//?Guarde el archivo cargado en la ruta especificada (configurada en Web xml) ? ?out println(El archivo se cargó correctamente);?//?{?out println(e getMessage());?return?}?}
En el método saveFile, primero recuperamos el servlet del Web xml Obtenga la ruta del archivo cargado en el parámetro de inicialización, luego obtenga el objeto InputStream del archivo cargado del objeto FormFile, recorra los bytes en el objeto InputStream y escríbalo en un nuevo archivo, y finalmente escriba el archivo en el nuevo archivo después de que la carga sea exitosa.
Paso 1 Configurar struts config xml
En este paso, configure las subclases de ActionForm y Action creadas en el paso 1 y 2 respectivamente. Abra el archivo xml de configuración de struts y agregue las siguientes subetiquetas en