Conseguir la carga de archivos

Use Commons-FileUpload
1. Importar paquete frasco
    Commons-FileUpload-1.2.1.jar de subida de archivos
    io herramienta commons-io-1.4.jar que proporciona.
    Introducción Commons-fileupload
        que tiene tres núcleos
            de clase 1.DiskFileItemFactory
            2.ServletFileUpload Clase
            3.FileItem
            
2. Inicio rápido:
        1. Crear upload2.jsp página
            <form action = "$ {} pageContext.request.contextPath / upload2" method = "post" eNCTYPE = "multipart / form-data">
                <input type = nombre de "archivo" = "f"> <br>
                <INPUT del tipo = "Enviar el" value = "carga">
            </ form>
        2. crear un Upload2Servlet
            1. crear un DiskFileItemFactory
                Fábrica = new nueva DiskFileItemFactory DiskFileItemFactory ();
            2. Crear una clase ServletFileUpload                    
                ServletFileUpload = Subir nueva nueva ServletFileUpload (fábrica);                    
            3. de análisis de todos los datos subidos
                List <> = FileItem la upload.parseRequest artículos (Solicitud);
                
        3. colección de elementos de desplazamiento, la colección cada uno es una carga de datos.
            1.isFormField ();
                
            2.getFieldName ();
                valor de retorno de cuerdas, para obtener los nombres de componentes <input name = "">
            3.getName ();
                valor de retorno es String, se obtiene . el nombre del archivo subido
                Nota: los diferentes navegadores, consiguen diferentes efectos.
                    1. Incluir el nombre completo de la ruta, por ejemplo: C: \ los usuarios \ Administrador \ Escritorio \ a.txt
                    2. subir archivos contienen sólo el nombre, por ejemplo: a.txt
                    
            4.getString ();
                Este método puede adquirir el contenido del método efecto getParameter no carga corresponde componentes.
                
                Si el componente de carga, cargar el archivo es un archivo de texto, se puede llegar a los contenidos del archivo.
                Sin embargo, si el archivo no es un archivo, por ejemplo: una foto, para hacerlo bien?
                    
            5. Obtener el contenido del archivo subido, guardado en el servidor.
                Item.getInputStream (), es un flujo de entrada para leer el contenido de la carga de archivos.
                utilice la operación de copia de archivos para completar la carga de archivos.
                
                IOUtils.copy (item.getInputStream (), fos) ;

paso de carga de archivos

  1. pasos para la implementación

1. Crear objetos DiskFileItemFactory, establecer el tamaño del búfer y el directorio de archivos temporales

2, objeto DiskFileItemFactory objeto la creación ServletFileUpload y los archivos de carga límite de tamaño establecido.

3, llame ServletFileUpload.parseRequest objeto de solicitud de resolución de métodos, obtener una bodega de todo el contenido subido el objeto de lista.

4, en la lista itera un FileItem cada iteración del objeto, llamar a su método isFormField para determinar si un archivo se carga

      • Fiel a campo de forma ordinaria, el getFieldName llamada, método getString para obtener los nombres de los campos y valores de campo
      • Falso para subir archivos, llamar a un método para obtener flujo de entrada de datos getInputStream, la lectura de este modo la carga de datos.

package cn.learn.web.servlet;

import java.io.FileOutputStream;
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 org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

public class Upload2Servlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// 1.创建 DiskFileItemFactory
		DiskFileItemFactory factory = new DiskFileItemFactory();

		// 2.创建
		ServletFileUpload upload = new ServletFileUpload(factory);

		try {
			// 底层通过request获取数据,进行解析,将解析的数据封装到List<FileItem>
			List<FileItem> items = upload.parseRequest(request);

			// 3.遍历集合
			for (FileItem item : items) {

				if (item.isFormField()) {
					// 这就是得到了<input type="text" name="content">这样的组件
					// String fieldName = item.getFieldName();
					// System.out.println(fieldName);
					//
					// String name = item.getName();
					// System.out.println(name);
					//
					// String msg = item.getString();
					// System.out.println(msg);
				} else {
					// 这就是得到了<input type="file"> 这样的组件.
					// String fieldName = item.getFieldName();
					// System.out.println("上传组件的名称:" + fieldName);
					//
					String name = item.getName(); // 上传文件名称
					System.out.println(name);
					name = name.substring(name.lastIndexOf("\\") + 1);
					// System.out.println("上传组件:" + name);
					//
					// String msg = item.getString();
					// System.out.println(msg);

					// 获取上传文件内容,完成文件 上传操作
					// InputStream is = item.getInputStream();
					// byte[] b = new byte[1024];
					// int len = -1;
					FileOutputStream fos = new FileOutputStream("d:/upload/"
							+ name);
					// while ((len = is.read(b)) != -1) {
					//
					// fos.write(b, 0, len);
					//
					// }
					// fos.close();
					// is.close();

					IOUtils.copy(item.getInputStream(), fos);

				}

			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		}

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

 

Liberadas 2417 artículos originales · ganado elogios 62 · Vistas de 200.000 +

Supongo que te gusta

Origin blog.csdn.net/Leon_Jinhai_Sun/article/details/105153411
Recomendado
Clasificación