Red de conocimiento informático - Problemas con los teléfonos móviles - Serie de tutoriales de Struts1.x (8): cargar un solo archivo

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 que se puede usar junto con atributos del tipo FormFile. A través del objeto FormFile devuelto por esta propiedad, puede obtener fácilmente el objeto InputStream del archivo cargado y realizar un procesamiento adicional.

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 y el objeto FormFile. Para implementar este ejemplo, debe seguir los siguientes seis pasos

Paso 1 Crear una página JSP de archivo de carga

Crear un archivo jsp uploadFile en el directorio directorio del proyecto >.

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 directorio de acción src con el siguiente código

?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

.

Agregue las siguientes subetiquetas

desde bean?name= uploadForm ?type= actionform UploadForm

Agregue las siguientes subetiquetas en actionppinggt;

lt ; action?name= uploadForm ?path= /uploadFile ?scope= request ?type= action UploadAction ?/gt

Paso 1 Establezca la ruta para guardar el archivo cargado

Abra el archivo. Web xml, busque el servlet llamado action (el servlet que maneja las operaciones de Struts) y agregue la siguiente subetiqueta en lt;servletgt; (asumiendo que la ruta para guardar el archivo cargado es D: upload). El último carácter de la ruta de carga debe ser)

lt;init paramgt;lt;param namegt;uploadPathlt;/param namegt;lt;param valuegt;D:\upload\lt;/param valuegt;lt ; /init paramgt;

Paso 1: Limitar el tamaño de los archivos cargados Este paso es opcional.

Abra el archivo xml de configuración de struts y agregue las siguientes subetiquetas en :