Preciso de um Formulário em JAVA similar ao que já tenho em PHP

Olá, tenho um formulário funcionando em meu site segue para exemplificar:
A pergunta está no final do texto e é para Java, pois em PHP já está funcionando

Página “formulario.php” :

<form action="cadastrar.php" method="post" enctype="multipart/form-data">
  <label for="Nome">Nome:</label>
  <input type="text" name="nome"/>
  <label for="imagem">Imagem:</label>
  <input type="file" name="imagem"/>
  <input type="submit" value="Enviar"/>
</form>

Página que recebe “cadastrar.php” :

<?php
  if (!empty($_POST['nome'])) {
    $onome = addslashes(trim($_POST['nome']));
  }
  $imagem = $_FILES["imagem"];
  if($imagem != NULL) {
    $nomeFinal = time().'.jpg';
    if (move_uploaded_file($imagem['tmp_name'], "arquivo/$nomeFinal")) {
      $tamanhoImg = filesize("arquivo/$nomeFinal");
      $mysqlImg = addslashes(fread(fopen("arquivo/$nomeFinal", "r"), $tamanhoImg)); 
    }
    else{
      mysqlImg = "Sem Imagem Selecionada.";
    }
    $sqlcadastrar = "insert into arquivos (nomearquivo,arquivo) values ('$onome','$mysqlImg')";
    mysql_query($sqlcadastrar, $conexao);
  }
?>

Estas 2 páginas acima estão funcionando 100% já estão em prática e sendo usadas.

Eis que começa meu problema:

Não entendo muito de Java, mas um amigo fez em java o programa com um TextField com a variável “nome” e está enviando via post para a página online: meusite.com/cadastrar.php desta forma cadastra o banco de dados o nome preenchido no programa Java até aqui está tudo muito lindo :slight_smile:

Porém ao criar um campo para anexar uma imagem JPG e enviar o “nome” e a “imagem” pelo programa Java, não recebo nada em POST, nem mesmo o “nome” que antes funcionava, neste meusite.com/cadasrtar.php

Será que alguém sabe como fazer para enviar o objeto/imagem do programinha em Java para uma página PHP?
Em PHP sei que no precisa do enctype=“multipart/form-data” para poder enviar imagens, mas em Java qual o método similar à este?

Cara não fica abrindo vários tópicos com o mesmo assunto, isso é má pratica no fórum e já estamos tentando te ajudar aqui:

Desculpe, tentei apagar aquele, pois as respostas que obtive parece que não me fiz entender corretamente, resolvi reformular a pergunta mostrando que em PHP estava funcionando.

Pra isso vc pode alterar o conteudo do seu post e alterar o titulo também é só prestar atenção!

Vamos la, o artigo que mandei nao ajuda?

https://www.tutorialspoint.com/jsp/jsp_file_uploading.htm

Java é um ecosistema muito grande, sem vc nos dizer qual tecnologia está usando fica mais dificil ajudarmos, imaginei que vc está usando jsp, por isso postei esse formato, mas pode ser JSF, Spring, etc…

Como disse não entendo de Java, um amigo que entende um pouco fez um programa que preencho o “nome” e aponta para o cadastrar.php, e funciona e grava no banco, adicionou um segundo campo de texto e também funcionou, depois ele retirou o segundo campo de texto, e adicionou uma imagem pra enviar no lugar do segundo campo de texto, à partir daí nem o primeiro campo de texto está chegando na página php
Segue um pedaço do código que ele disse que está tentando usar:

  String urlParameters = "nome="+jTextField2.getText()+"&imagem="+arrayBase[0]; // a Imagem esta no arrayBase[0]
  String url = "meusite.com/cadastrar.php";
  byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
  try {
    URL myurl = new URL(url);
    con = (HttpURLConnection) myurl.openConnection();
    con.setDoOutput(true);
    con.setRequestMethod("POST");
    con.setRequestProperty("User-Agent", "Java client");
    con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
      wr.write(postData);
    } catch (IOException ex) {
      Logger.getLogger(Principal.class.getName()).log(Level.WARNING, null, ex);
    }
    StringBuilder content = null;
    try (BufferedReader in = new BufferedReader(
      new InputStreamReader(con.getInputStream()))) {
      String line;
      content = new StringBuilder();
      while ((line = in.readLine()) != null) {
        content.append(line);
        content.append(System.lineSeparator());
      }
    } catch (IOException ex) {
      Logger.getLogger(Principal.class.getName()).log(Level.WARNING, null, ex);
      JOptionPane.showMessageDialog(null, "Erro ao enviar confirmação de gravação da imagem", "ERRO", ERROR_MESSAGE );
    }
    JOptionPane.showMessageDialog(null, content.toString());

Cara nessa parte do URLConnection, da uma olhada nisso que talvez ajude…

Tem uns exemplos parecidos com o que vc está usando, só na parte do setRequestProperty que tem uns esqueminhas de data, boundary etc, talvez isso que esteja faltando pra enviar o arquivo certinho… boa sorte!