Upload de imagens de programa swing

5 respostas
I

Boa tarde a todos, tenho uma aplicação desktop onde preciso fazer upload de imagens para um servidor web que está em java, já consigo buscar as imagens a partir da url e mostra-las no programa porém ainda não consegui fazer o upload que eu quero. Olhei no google e vi uns exemplos porém não consegui executa-los, também vi o seguinte tópico aqui http://www.guj.com.br/java/102538-app-desktop-fazer-upload-de-arquivos-na-webtem-como onde ricardosoares indica o ‘Apache HttpComponents’, também não consegui rodar o exemplo dele, baixei as dependências porém ainda acusava erro de importação das dependências.

Alguém teria algum exemplo para me passar? Ou alguma outra dica?

5 Respostas

T

Dê uma lida, deve te ajudar (várias versões da mesma ideia):

http://www.guj.com.br/articles/154
http://www.guj.com.br/java/203036-transferencia-de-arquivos-txt-pdf-tiff-via-sockets-upload-and-download
http://www.rgagnon.com/javadetails/java-0542.html
http://www.java2s.com/Code/Java/Network-Protocol/TransferafileviaSocket.htm

Abraço.

J
Ivan Alves:
Boa tarde a todos, tenho uma aplicação desktop onde preciso fazer upload de imagens para um servidor web que está em java, já consigo buscar as imagens a partir da url e mostra-las no programa porém ainda não consegui fazer o upload que eu quero. Olhei no google e vi uns exemplos porém não consegui executa-los, também vi o seguinte tópico aqui [url]http://www.guj.com.br/java/102538-app-desktop-fazer-upload-de-arquivos-na-webtem-como[/url] onde ricardosoares indica o 'Apache HttpComponents', também não consegui rodar o exemplo dele, baixei as dependências porém ainda acusava erro de importação das dependências.

Alguém teria algum exemplo para me passar? Ou alguma outra dica?

usa o protocolo http e dá um POST com a imagem como parâmetro.

try {
    // Construct data
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");
    data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");

    // Send data
    URL url = new URL("http://hostname:80/cgi");
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(data);
    wr.flush();

    // Get the response
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
        // Process line...
    }
    wr.close();
    rd.close();
} catch (Exception e) {
}
I

juliocbq tentei sua dica alterando para minha necessidade porém ao chegar no servlet que está dessa forma

@Override
    protected void doPost(HttpServletRequest request,  
            HttpServletResponse response) throws IOException, ServletException  {
        //response.setContentType("multipart/form-data;charset=UTF-8");
        
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (!isMultipart) {
            System.out.println("Não é multipart");
            response.getWriter().println("Não é multipart");
        } else {
            System.out.println("Iniciando upload para o servidor");
            response.getWriter().println("Iniciando upload para o servidor!");
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            upload.setSizeMax[telefone removido]);
            List items = null;
            try {
                items = upload.parseRequest(request);
            } catch (FileUploadException e) {
                e.printStackTrace();
            }
            Iterator itr = items.iterator();
            while (itr.hasNext()) {
                FileItem item = (FileItem) itr.next();
                if (item != null) {
                    if (item.isFormField()) {
                    } else {
                        try {
                            String itemName = item.getName();
                            String location = "/teste/";
                            int index = itemName.lastIndexOf("\\") + 1;
                            String fileName = itemName.substring(index, itemName.length());
                            System.out.println("File Name: " + fileName);
                            GenericServlet config = null;
                            File savedFile = new File(location + fileName);
                            item.write(savedFile);
                            System.out.println("Salvou no local:" + location + fileName);
                            response.getWriter().println("Upload realizado com sucesso em "+location+fileName);
                        } catch (Exception e) {
                            response.getWriter().println("Erro ao fazer upload: "+e.getMessage());
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }

Ai ele cai no primeiro if dizendo que ‘Não é multipart’

Procurando um pouco na net achei esse tópico http://stackoverflow.com/questions/10471001/java-progressbar-with-http-upload-dont-update. Usei o primeiro código e passou pelo primeiro if, porém deu erro de url mal formatada na servlet.
Tem alguma sugestão? Utilizo FileUpload para fazer o upload

I

TerraSkilll:
Dê uma lida, deve te ajudar (várias versões da mesma ideia):

http://www.guj.com.br/articles/154
http://www.guj.com.br/java/203036-transferencia-de-arquivos-txt-pdf-tiff-via-sockets-upload-and-download
http://www.rgagnon.com/javadetails/java-0542.html
http://www.java2s.com/Code/Java/Network-Protocol/TransferafileviaSocket.htm

Abraço.

TerraSkilll vi as alternativas sugeridas por você, a do FTP não será possível, e a do Socket acredito que também não, já que a aplicação do servidor é Java Web.

I

Consegui acessei esse link http://www.experts-exchange.com/Web_Development/WebTrends_Stats/Q_24073356.html e tentei fazer o que o usuário bluebelldiscovery porém o meu estava dando alguns erros na hora de salvar então verifiquei melhor e mudei o caminho que ele estava utilizando ai deu certo, agora vou melhorar o código e tentar posta-lo aqui para que possa ajudar mais alguém que precisar!

Criado 5 de setembro de 2012
Ultima resposta 6 de set. de 2012
Respostas 5
Participantes 3