Estoy usando Spring MVC y este es mi método:
/**
* Upload single file using Spring Controller.
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file,
HttpServletRequest request,
HttpServletResponse response) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
// Creating the directory to store file
String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "tmpFiles");
if (!dir.exists()) {
dir.mkdirs();
}
// Create the file on server
File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
System.out.println("Server File Location=" + serverFile.getAbsolutePath());
return null;
} catch (Exception e) {
return null;
}
}
}
Necesito pasar el id de sesión en cartero y también el archivo. ¿Cómo puedo hacer eso?
fuente
POST
? ¿Qué hay dePUT
?String
siempre. ¿Por qué no se asigna a mi DTO?@PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto )
No puedo enviar la solicitud del cartero en este casoRequestDto
automáticamente. Lo tomé como una cadena, lo analicéJson
y lo mapeéRequestDto
explícitamente.La guía visual que falta
Primero debes encontrar el menú desplegable casi invisible de color gris pálido sobre blanco para el
File
cual es la llave mágica que desbloquea elChoose Files
botón.Después de que elija
POST
, luego elijaBody->form-data
, luego busque el menú desplegable Archivo y luego elija 'Archivo', solo entonces aparecerá mágicamente el botón 'Elegir archivos':fuente
Tal vez podrías hacerlo de esta manera:
fuente
Me gusta esto :
Cuerpo -> datos de formulario -> seleccionar archivo
Debe escribir "archivo" en lugar de "nombre"
También puede enviar datos JSON desde Cuerpo -> campo sin procesar. (Solo pegue la cadena JSON)
fuente
fuente
Si necesita cargar archivos en varias partes utilizando datos de formulario y enviar datos json (objeto Dto) en la misma solicitud POST
Obtenga su objeto JSON como String en Controller y hágalo Deserializar agregando esta línea
fuente
Seleccione [Tipo de contenido] en [MOSTRAR COLUMNAS] y luego configure el tipo de contenido de "aplicación / json" en el parámetro de texto json.
fuente
Si alguien necesitara:
cuerpo -> datos de formulario
Agregar nombre de campo como matriz
fuente
Si alguien quiere enviar datos json en formato de datos de formulario, solo necesita declarar las variables como esta
Cartero:
Como puede ver, el parámetro de descripción estará en formato json básico, resultado de eso:
fuente
Necesitaba pasar ambos: un archivo y un número entero. Lo hice de esta manera:
necesitaba pasar un archivo para cargar: lo hice según la respuesta de Sumit.
Tipo de solicitud: POST
Cuerpo -> datos de formulario
debajo del encabezado CLAVE , ingresé el nombre de la variable ('archivo' en mi código de fondo).
en el backend:
file = request.files['file']
Junto a 'archivo', hay un cuadro desplegable que le permite elegir entre 'Archivo' o 'Texto'. Elija 'Archivo' y bajo el título VALOR , apareció 'Seleccionar archivos'. Hice clic en este que abrió una ventana para seleccionar el archivo.
2. necesario para pasar un número entero:
fui a:
Params
nombre de la variable ingresada (por ejemplo, id) debajo de KEY y su valor (por ejemplo: 1) debajo de VALUE
en el backend:
¡Trabajó!
fuente
Use el código a continuación en el lado de descanso de primavera:
fuente
Para cada clave de datos de formulario, puede establecer Content-Type, hay un botón de cartero a la derecha para agregar la columna Content-Type, y no tiene que analizar un json desde una cadena dentro de su Controlador.
fuente
Si desea realizar una
PUT
solicitud, simplemente haga todo como unaPOST
solicitud, pero agregue_method
=>PUT
a susform-data
parámetros.fuente
La forma de enviar datos de mulitpart que contienen un archivo con los datos json es la siguiente: necesitamos establecer el tipo de contenido de los campos clave json respectivos en 'application / json' en la pestaña del cuerpo del cartero de la siguiente manera:
Esta imagen de enlace le informará sobre el envío de la imagen con datos json
fuente
Si usa cookies para mantener la sesión, puede usar el interceptor para compartir cookies del navegador al cartero.
Además, para cargar un archivo, puede usar la pestaña de datos de formulario debajo de la pestaña del cuerpo del cartero, en la que puede proporcionar datos en formato clave-valor y para cada clave puede seleccionar el tipo de texto / archivo de valor. cuando selecciona la opción de tipo de archivo apareció para cargar el archivo.
fuente
ingrese la descripción de la imagen aquí
controlador de reposo [clase de servicio clase de inicializador de aplicación para multipart con [postman pic] 2 fig
fuente