java - responseentity - cómo cargar un archivo y datos json en cartero
spring rest (13)
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?
- No le des ningún encabezado.
- Ponga sus datos json dentro de un archivo .json.
- Seleccione ambos archivos, uno es su archivo .txt y otro es el archivo .json para sus claves de parámetros de solicitud.
En cartero, establezca el tipo de método en POST .
Luego seleccione Cuerpo -> datos de formulario -> Ingrese el nombre de su parámetro ( archivo de acuerdo con su código)
y en el lado derecho al lado de la columna de valor, habrá un desplegable "texto, archivo" , seleccione Archivo . elige tu archivo de imagen y publícalo.
Para el resto de parámetros basados en "texto" , puede publicarlo como lo hace normalmente con cartero. Simplemente ingrese el nombre del parámetro y seleccione "texto" en el menú desplegable del lado derecho e ingrese cualquier valor para él, presione el botón enviar. Su método de controlador debe ser llamado.
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
ingresó el nombre de la variable (por ejemplo, id) debajo de KEY y su valor (por ejemplo: 1) debajo de VALUE
en el backend:
id = request.args.get(''id'')
¡Trabajó!
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:
{ description: { spanish: ''hola'', english: ''hello'' } }
Si desea realizar una solicitud
PUT
, simplemente haga todo como una solicitud
POST
pero agregue
_method
=>
PUT
a sus parámetros de
form-data
.
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.
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
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
ContactDto contactDto = new ObjectMapper().readValue(yourJSONString, ContactDto.class);
Primero
debe encontrar el menú desplegable casi invisible de color gris pálido sobre blanco para
File
que es la llave mágica que desbloquea el botón
Choose Files
.
La guía visual que falta:
Después de
elegir
POST
,
luego
elija
Body->form-data
,
luego
busque el menú desplegable Archivo y
luego
elija ''Archivo'',
solo entonces
aparecerá mágicamente el botón ''Elegir archivos'':