FileUpload não salva os bytes

0 respostas
jpaajaxjavascriptjavarest
G

Tenho um formulário em html onde tenho um input do tipo file, tenho que fazer o post dele e gravar os bytes no SQL Server, porém ele grava no banco apenas os bytes do “C:/fakepath/nomeDoArquivo”. Estou utilizando jQuery e o backend é em java, segue o html e o backend.

<form id="manutencaoForm" method="post"
	enctype="multipart/form-data">
<fieldset>

		<div class="form-group">
			<label class="col-md-2 control-label">Anexar </label>
			<div class="col-md-10">
				<input type="file" class="btn btn-default"
					name="filenameAnexo" id="filenameAnexo">
			</div>
		</div>
</fieldset>

JS:

var incluiCertificado = () => {
			
	var formData = new FormData();
	

	// Serializa inputs que estão no container da solicitação
	$('#manutencaoForm :input').each(function(i, elemento) {
		formData.append($(elemento).attr('name'), $(elemento).val());
	});
	
	$.ajax({
        url: '/anexo/inclui',
        type: 'POST',
        data: formData,
        contentType: false,
        processData: false	       
    }).done(function(retorno){
    	$('#dlgCertificado').dialog("close");
        carregaDados();
    });
}

Java:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/inclui")
public Response inclui(MultipartFormDataInput formData) {
    Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
	List<InputPart> inputParts = uploadForm.get("filenameAnexo");
    Map<String, Object> mapa = new HashMap<>();

	for (InputPart inputPart : inputParts) {

	 try {

		MultivaluedMap<String, String> header = inputPart.getHeaders();
		fileName = getFileName(header);

		//convert the uploaded file to inputstream
		InputStream inputStream = inputPart.getBody(InputStream.class,null);

		byte [] bytes = IOUtils.toByteArray(inputStream);

		mapa.put(e.getKey(), fileName);
		mapa.put(e.getKey() + "_bytes", bytes);

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

	}

            MeuObj meuObj= new MeuObj();
           meuObj.setFilename(mapa.get("filenameAnexoCertificado_bytes"));
           
	getEntityManager().merge(meuObj);

	return Response.ok().build();
}

Claro que aqui deixei tudo meio que junto pra não ficar maior do que já está, mas é só pra ter uma noção de como está fazendo. Ele grava no banco porém quando faço um serviço de GET para tratar esses bytes e fazer o download do documento ele me retorna um documento com o caminho C:\fakepath\nomeDoArquivo. Não sei onde está o meu erro se alguém puder me ajudar, desde já agradeço.

Criado 26 de julho de 2017
Respostas 0
Participantes 1