Estou usando o Spring MVC e este é o meu 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;
}
}
}
Eu preciso passar a identificação da sessão no carteiro e também o arquivo. Como eu posso fazer isso?
fonte
POST
? Que talPUT
?String
sempre. Por que ele não é mapeado para o meu DTO?@PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto )
Iam não é capaz de enviar o requesst do carteiro em todo este casoRequestDto
automaticamente. Eu peguei como uma string, analiseiJson
e mapeeiRequestDto
explicitamente.O guia visual ausente
Você deve primeiro encontrar o menu suspenso quase invisível de cinza pálido sobre branco, para o
File
qual é a chave mágica que desbloqueia oChoose Files
botão.Depois que você escolher
POST
, em seguida, escolherBody->form-data
, em seguida, encontrar o menu suspenso Arquivo e, em seguida, escolha 'File', só então será o 'Escolha Files' botão magicamente aparecer:fonte
Talvez você possa fazer desta maneira:
fonte
Como isso :
Corpo -> dados do formulário -> selecionar arquivo
Você deve escrever "arquivo" em vez de "nome"
Além disso, você pode enviar dados JSON do corpo -> campo bruto. (Basta colar a string JSON)
fonte
fonte
Se você precisar enviar o arquivo em várias partes usando dados do formulário e enviar dados json (objeto Dto) na mesma solicitação POST
Obtenha seu objeto JSON como String no Controller e faça a desserialização adicionando esta linha
fonte
Selecione [Tipo de conteúdo] em [MOSTRAR COLUNAS] e defina o tipo de conteúdo de "application / json" como o parâmetro do texto json.
fonte
Se alguém precisasse:
corpo -> dados do formulário
Adicionar nome do campo como matriz
fonte
Se alguém quiser enviar dados json no formato form-data, basta declarar as variáveis como esta
Carteiro:
Como você vê, o parâmetro description estará no formato json básico, resultado disso:
fonte
Eu precisava passar os dois: um arquivo e um número inteiro. Eu fiz assim:
necessário passar um arquivo para fazer o upload: faça-o conforme a resposta de Sumit.
Tipo de solicitação: POST
Corpo -> dados do formulário
sob o cabeçalho KEY , digite o nome da variável ('arquivo' no meu código de back-end).
no back-end:
file = request.files['file']
Ao lado de 'arquivo', há uma caixa suspensa que permite escolher entre 'Arquivo' ou 'Texto'. Escolha 'Arquivo' e, sob o título VALUE , 'Selecionar arquivos' aparecerá. Clicou nele para abrir uma janela para selecionar o arquivo.
2. necessário para passar um número inteiro:
frequentou:
Params
digitou o nome da variável (por exemplo: id) em KEY e seu valor (por exemplo: 1) em VALUE
no back-end:
Trabalhou!
fonte
Use o código abaixo no lado de descanso da mola:
fonte
Para cada chave de dados do formulário, você pode definir o Tipo de Conteúdo, existe um botão carteiro à direita para adicionar a coluna Tipo de Conteúdo, e você não precisa analisar um json de uma sequência dentro de seu Controlador.
fonte
Se você deseja fazer uma
PUT
solicitação, faça tudo como umaPOST
solicitação, mas adicione_method
=>PUT
aos seusform-data
parâmetros.fonte
A maneira de enviar dados de várias partes que contêm um arquivo com os dados json é a seguinte: precisamos definir o tipo de conteúdo dos respectivos campos da chave json como 'application / json' na guia body do postman, como a seguir:
Esta imagem de link informará sobre o envio da imagem com dados json
fonte
Se você estiver usando cookies para manter a sessão, poderá usar o interceptador para compartilhar cookies do navegador para o carteiro.
Também para fazer upload de um arquivo, você pode usar a guia form-data na guia body no carteiro, na qual é possível fornecer dados no formato de valor-chave e, para cada chave, é possível selecionar o tipo de valor texto / arquivo. quando você seleciona o tipo de arquivo, a opção apareceu para fazer o upload do arquivo.
fonte
insira a descrição da imagem aqui
controlador rest [classe de serviço applicationinitializer application for multipart con [postman pic] 2 fig
fonte