Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ricardo Lima CSJ

Upload de arquivo em java desktop para servidor web

Recommended Posts

Estou fazendo uma aplicativo desktop que se conecta a um servidor.

No caso, quero colocar um botão que ao ser clicado, abra a janela para selecionar o arquivos.

Daí, os arquivos tem que ir para uma pasta no servidor web.

 

como fazer?

alguém poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seria o caso de tu explicares melhor o que precisas. Se se trata de um servidor web, deve-se criar uma conexão HTTP e enviar uma requisição utilizando o método POST. Se a conexão é via stream socket fica mais fácil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É assim.

 

Estou desenvolvendo um aplicativo java para desktop. Estou utilizando o NetBeans IDE 8.0.

neste aplicativo tem que ter função de upload de várias imagens para dentro de uma pasta no servidor web.

queria saber então, como fazer upload de várias imagens para dentro do servidor web, e com isso, gostaria de saber como fazer a conexão com o servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então é só proceder como no meu último post. Crie uma conexão HTTP e faça uma requisição utilizando o método POST. Utilize encriptação de formulário e passe o arquivo como parâmetro da requisição. Tem um montão de exemplos na internet. Aqui vai um: http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha fiz como ta lá, no link.

Deu esse erro aqui: java.io.IOException: Server returned non-OK status: 404.

 

Segue abaixo os códigos.

 

Classe principal

public class CACAMUR {

    /**
     * @param args the command line arguments
     * @throws java.sql.SQLException
     */
    public static void main(String[] args) throws SQLException {
        // TODO code application logic here
        
        UpImagem.UpImagem("G:/11206093_663329610478413_79875570373724068_n.JPG");
    }
}

UpImagem.java

import java.io.File;
import java.io.IOException;
import java.util.List;
/**
 *
 * @author RICARDO LIMA
 */
public class UpImagem {
     public static void UpImagem(String args) {
        String charset = "UTF-8";
        File uploadFile = new File(args);
        String requestURL = "http://localhost/testeupload/uploads_docs";
 
        try {
            CarregaImagem multipart = new CarregaImagem(requestURL, charset);
             
            multipart.addHeaderField("User-Agent", "CodeJava");
            multipart.addHeaderField("Test-Header", "Header-Value");
             
            multipart.addFormField("description", "Cool Pictures");
            multipart.addFormField("keywords", "Java,upload,Spring");
             
            multipart.addFilePart("fileUpload", uploadFile);
 
            List<String> response = multipart.finish();
             
            System.out.println("SERVER REPLIED:");
             
            for (String line : response) {
                System.out.println(line);
            }
        } catch (IOException ex) {
            System.err.println(ex);
        }
     }
}

CarregaImagem.java

import java.io.BufferedReader;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

public class CarregaImagem {
 
    private final String boundary;
    private static final String LINE_FEED = "\r\n";
    private HttpURLConnection httpConn;
    private String charset;
    private OutputStream outputStream;
    private PrintWriter writer;
    
    /**
     * Desenvolvido por Ricardo Lima
     */
    public CarregaImagem(String requestURL, String charset) throws MalformedURLException, IOException {
        this.charset = charset;
         
        // creates a unique boundary based on time stamp
        boundary = "===" + System.currentTimeMillis() + "===";
         
        URL url = new URL(requestURL);
        httpConn = (HttpURLConnection) url.openConnection();
        httpConn.setUseCaches(false);
        httpConn.setDoOutput(true); // indicates POST method
        httpConn.setDoInput(true);
        httpConn.setRequestProperty("Content-Type",
                "multipart/form-data; boundary=" + boundary);
        httpConn.setRequestProperty("User-Agent", "CodeJava Agent");
        httpConn.setRequestProperty("Test", "Bonjour");
        outputStream = httpConn.getOutputStream();
        writer = new PrintWriter(new OutputStreamWriter(outputStream, charset),
                true);
    }

    
    /**
     * Adds a form field to the request
     * @param name field name
     * @param value field value
     */
    public void addFormField(String name, String value) {
        writer.append("--" + boundary).append(LINE_FEED);
        writer.append("Content-Disposition: form-data; name=\"" + name + "\"")
                .append(LINE_FEED);
        writer.append("Content-Type: text/plain; charset=" + charset).append(
                LINE_FEED);
        writer.append(LINE_FEED);
        writer.append(value).append(LINE_FEED);
        writer.flush();
    }
 
    /**
     * Adds a upload file section to the request
     * @param fieldName name attribute in <input type="file" name="..." />
     * @param uploadFile a File to be uploaded
     * @throws IOException
     */
    public void addFilePart(String fieldName, File uploadFile)
            throws IOException {
        String fileName = uploadFile.getName();
        writer.append("--" + boundary).append(LINE_FEED);
        writer.append(
                "Content-Disposition: form-data; name=\"" + fieldName
                        + "\"; filename=\"" + fileName + "\"")
                .append(LINE_FEED);
        writer.append(
                "Content-Type: "
                        + URLConnection.guessContentTypeFromName(fileName))
                .append(LINE_FEED);
        writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
        writer.append(LINE_FEED);
        writer.flush();
 
        FileInputStream inputStream = new FileInputStream(uploadFile);
        byte[] buffer = new byte[4096];
        int bytesRead = -1;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
        outputStream.flush();
        inputStream.close();
         
        writer.append(LINE_FEED);
        writer.flush();    
    }
 
    /**
     * Adds a header field to the request.
     * @param name - name of the header field
     * @param value - value of the header field
     */
    public void addHeaderField(String name, String value) {
        writer.append(name + ": " + value).append(LINE_FEED);
        writer.flush();
    }
     
    /**
     * Completes the request and receives response from the server.
     * @return a list of Strings as response in case the server returned
     * status OK, otherwise an exception is thrown.
     * @throws IOException
     */
    public List<String> finish() throws IOException {
        List<String> response = new ArrayList<String>();
 
        writer.append(LINE_FEED).flush();
        writer.append("--" + boundary + "--").append(LINE_FEED);
        writer.close();
 
        // checks server's status code first
        int status = httpConn.getResponseCode();
        if (status == HttpURLConnection.HTTP_OK) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    httpConn.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null) {
                response.add(line);
            }
            reader.close();
            httpConn.disconnect();
        } else {
            throw new IOException("Server returned non-OK status: " + status);
        }
 
        return response;
    }
} 

o que falta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

java.io.IOException: Server returned non-OK status: 404

Quer dizer que o recurso requisitado não foi encontrado. Tem certeza que o endereço correto foi informado? http://localhost/testeupload/uploads_docs

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu certo agora a Url = "http://localhost/testeuploads/uploads_docs". Não aparece erro. entretanto, ainda não realiza o upload para dentro da pasta uploads_docs.

 

Me retorna o seguinte:

run:
SERVER REPLIED:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>Index of /testeuploads/uploads_docs</title>
 </head>
 <body>
<h1>Index of /testeuploads/uploads_docs</h1>
<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
<tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/testeuploads/">Parent Directory</a>       </td><td> </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="Educador/">Educador/</a>              </td><td align="right">20-Mar-2015 15:20  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="album/">album/</a>                 </td><td align="right">24-Mar-2015 20:46  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="background/">background/</a>            </td><td align="right">20-Mar-2015 15:21  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="banner/">banner/</a>                </td><td align="right">20-Mar-2015 15:21  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="cordenacao/">cordenacao/</a>            </td><td align="right">20-Mar-2015 15:19  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="funcionario/">funcionario/</a>           </td><td align="right">20-Mar-2015 15:19  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="icone/">icone/</a>                 </td><td align="right">20-Mar-2015 15:20  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="link/">link/</a>                  </td><td align="right">14-Mar-2015 21:04  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="noticia/">noticia/</a>               </td><td align="right">20-Mar-2015 15:19  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="parceiro/">parceiro/</a>              </td><td align="right">20-Mar-2015 15:20  </td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="voluntario/">voluntario/</a>            </td><td align="right">20-Mar-2015 15:20  </td><td align="right">  - </td></tr>
<tr><th colspan="5"><hr></th></tr>
</table>
</body></html>
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A URL que tu estás a acessar não é a responsável por fazer o upload. É bom provável que se trate de um servlet. Faz o seguinte. Navegue até a página de upload do sistema web e verifique o seu código-fonte. Na tag form, verifique a propriedade action. A URL que deve ser requisitada é a presente no form action.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Navegue até a página que tem o formulário de envio de arquivo. Mande exibir o código-fonte da página. Encontre a tag form.

<html>
...
<body>
  <form action="/testeuploads/upload_docs/uploadFileServlet" method="POST">
    ...
  </form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por shirulkm
      Olá!
      Possuo um site que está hospedado no Hostgator, porém ele tem uma frescura de limite de CPU e quando atinge o limite ele bloqueia a conta e tira o site do ar (enviando email de aviso que atingiu o limite junto com o bloqueio).
      Porém, eu utilizava o Bluehost, que em 3 anos nunca deu problema.
      Eu gostaria de saber se tem como eu setar o DNS para o Bluehost qndo o Hostgator cair ou me bloquearem, pois no Registro.br não posso deixar os dois setados né?
      Grato
    • Por oomaikoo
      Boa noite galera, estou administrando um servidor apache que tem em média 300 a 400 acessos simultâneos, é um site de notícias em WORDPRESS então as vezes uma noticia viraliza e o servidor bate 800 900 usuários simultâneos e ele cai, reinicia, enfim, estou utilizando 2 módulos ativos PREFORK e WORKER com os seguintes configurações
      <IfModule prefork.c> ServerLimit 16 StartServers 768 MinSpareServers 512 MaxSpareServers 768 MaxClients 16 MaxKeepAliveRequests 128 MaxRequestsPerChild 128 </IfModule> <IfModule worker.c> ServerLimit 16 StartServers 768 MinSpareServers 512 MaxSpareServers 768 MaxClients 16 MaxKeepAliveRequests 128 MaxRequestsPerChild 128 </IfModule> Minha pergunta é, posso melhorar a performance deles? esta configuração está boa ou me indicam alguma mudança?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.