JavaWeb ~ Proceso simple de carga de archivos


Aquí se implementa una función simple de carga de imágenes, principalmente para familiarizarse con el proceso interactivo de esta carga de archivos. Con respecto a las cargas de archivos más complejas, como la carga de fragmentos de archivos grandes, la reanudación de cargas desde puntos de interrupción, etc., no presentaré demasiado aquí.

archivo de carga frontal

Primero cree una página en el front-end, aquí elegimos cargar archivos en forma de formulario. Al seleccionar, use inputel tipo en la etiqueta para fileseleccionar automáticamente el archivo local.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传一张图片</title>
</head>
<body>
<form action="upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="MyImage">
    <input type="submit" value="提交图片">
</form>
</body>
</html>

Explicación del código :

  • En la etiqueta del formulario, actionla dirección URL de la carga de datos del formulario se escribe después del atributo. Si no se escribe, se cargará en la página actual de forma predeterminada. Aquí escribimos la dirección analizada por el servidor @WebServlet(" /upload" ).
  • En el atributo de método, lo configuramos como el método POST, es decir, el método para enviar datos de formulario, que es el método para construir solicitudes HTTP como mencionamos anteriormente, y la cantidad de datos transmitidos por POST es grande, lo que puede ser considerado como ilimitado.
  • enctype="multipart/form-data", la función de este atributo es establecer el formato de codificación de datos del formulario como multipart/form-datatipo, este tipo de codificación procesará el contenido del archivo al cargarlo, para que el servidor pueda analizar el tipo de archivo y el contenido.

atributo enctype :
application/x-www=form-urlencoded : de forma predeterminada, solo se procesa el valor del atributo de valor en el campo de formulario, y el valor en el campo de formulario se procesa en el método de URLcodificación ;
multipart/form-data : el formulario se procesa en forma de flujo binario Datos, además del valor del atributo de valor en el campo de formulario, también procesa el contenido del archivo del campo de formulario, lo encapsula en los parámetros de solicitud y no codifica caracteres;
texto/sin formato : Convierta espacios en signos +, otros caracteres no están codificados Proceso, adecuado para enviar correo a través de formularios.

Resumen :

  • La carga de archivos front-end es en realidad la transferencia de contenido y datos del archivo, no las operaciones de copia y copia de archivos que usamos comúnmente.
  • En el proceso de transmisión, la medicina tradicional china se codifica para formular las reglas para la transmisión de datos, de modo que el backend pueda implementar un conjunto de reglas de análisis correspondientes para el análisis.
  • La regla de datos aprobada debe contener la información básica del archivo, como el nombre y el tipo de archivo, para que el análisis de back-end pueda escribir el archivo en el formato correcto.

Backend acepta archivos

La solicitud se procesa en el lado del servidor, y los archivos de la solicitud se extraen y se guardan nuevamente, y finalmente el código se implementa en Tomcat.

Al analizar el archivo en la solicitud, getPartse debe usar el método en Servlet. El parámetro de este método es el nombre del archivo correspondientename

Al cargar archivos en el front-end, puede seleccionar varios archivos para cargar a la vez, y cada archivo se empaquetará en un Partobjeto. Cada archivo tendrá su propio nombre de archivo, y el servidor puede encontrar el archivo correspondiente de acuerdo con el archivo. name. Part, Partque contiene la información del archivo correspondiente.

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;


@MultipartConfig
@WebServlet("/upload")
public class UploadServlet extends HttpServlet {
    
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        //1.从请求对象中,读取出Part对象
        Part part =req.getPart("MyImage");
        //2.读取到Part 对象中的一些参数
        System.out.println(part.getSubmittedFileName()); // 上传文件真实的文件名
        System.out.println(part.getContentType()); // 文件的类型
        System.out.println(part.getSize()); // 文件的大小

        //3.把文件写入到指定的目录中
        part.write("c:/temp/MyImage.jpg");
        //4.返回一个响应,通知用户上传成功
        resp.getWriter().write("upload OK !");
    }
}

Explicación del código:

  • El servlet que acepta cargas de archivos debe estar @MultipartConfiganotado; de lo contrario, el servlet no puede leer correctamente el contenido del archivo en la solicitud.
  • @WebServlet("/upload") aquí corresponde al /uploadvalor del atributo de acción en la etiqueta del formulario de front-end . uploadEl atributo de acción enviará los datos en el formulario a la URL correspondiente. El front-end establece la URL para cargar, por lo que el back-end también debe corresponder al front-end al construir la URL. De lo contrario, no se puede acceder a Tomcat.
  • El método específico reescrito en el servlet también debe methodcorresponder al atributo de front-end. El front-end usa un Postmétodo, y las reescrituras de back-end en el servlet son el doPostmétodo.
  • En el método anulado, primero necesitamos nameobtener el Partobjeto correspondiente a través del nombre del archivo. El nombre del archivo front-end es MyImage, entonces el parámetro aquí debe ser MyImage.
  • Después de obtener el objeto, la información de los parámetros del archivo, como el nombre del archivo, el tipo de archivo, el tamaño del archivo, etc., se puede obtener a través de algunos métodos integrados de Servlet.
  • Luego part.write()haga que el archivo sea persistente por método, es decir, guarde el archivo y escríbalo en el directorio especificado. El parámetro de este método es la ruta que desea guardar.
  • Finalmente, se puede devolver una respuesta para notificar al cliente que la carga se realizó correctamente.

Ingrese la URL en el navegador, envíe una solicitud y comience a cargar el archivo. La carga
inserte la descripción de la imagen aquí
se realizó correctamente .
inserte la descripción de la imagen aquí
En la ruta local correspondiente, puede ver el archivo cargado.
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Merciful_Lion/article/details/123616307
Recomendado
Clasificación