Olá Pessoal,
Venho trabalhando há um bom tempo com API do Dropbox em web apps. No post de hoje vamos ver como enviar um arquivo para uma conta no dropbox via Java Application. É um verdadeiro upload via console.
Lets go…
O cenário
Imagine que você queira ter um upload na sua aplicação. Nada de diferente aqui, mas sabemos que há várias formas de fazer isso e temos bastante frameworks Java que nos ajudam. Mas, como fazer de forma rápida e segura? Aqui usamos o serviço do Dropbox para armazenamento de arquivos que vem da aplicação. Isso nos ajuda em vários pontos:
1. Segurança: Certamente o time do dropbox é preocupado com isso;
2. Histórico: Por default o dropbox mantém um histórico do arquivo, então em caso de precisar retornar uma versão é muito simples;
3. Baixo custo de desenvolvimento: API do dropbox é bem documentada e tem suporte a diversas linguagens. O que teremos que fazer é sempre implementar algo muito específico ou encapsular algumas features mais comuns para evitar de ter código repetido em várias partes da aplicação;
Ai nasceu no laboratorio da ITS a easyJavaDropboxAPI(https://github.com/ITSStartup/easyJavaDropboxAPI), que nos ajuda no dia a dia. A API ainda está nas primeiras versões e recentemente acabou de sair a versão 1.1.0 com algumas funcionalidades e melhorias e uma delas é permitir salvar arquivos no dropbox (a versão anterior nos permitia apenas ler um arquivo). O método na API que salva um arquivo é assim:
Vamos ver na prática
Primeiro Passo
Vamos usar o projeto easyJavaDropboxAPIExample que vimos no post: https://blog.camilolopes.com.br/serie-dropbox-conectando-com-dropbox-api-java/
Então você precisa ter feito os passos descritos no post acima.
Segundo Passo
Se fez o passo 1, certamente consegue listar os arquivos.
Terceiro Passo
Atualize o pom.xml para usar a versão mais nova da API:
<dependencies> <dependency> <groupId>com.its.api</groupId> <artifactId>easyJavaDropboxAPI</artifactId> <version>1.1.0</version> </dependency> </dependencies>
Quarto Passo
Agora vamos adicionar o código que fará o upload. Não vamos modificar o código existente, apenas adicionar. No método main adicone as seguintes linhas:
//upload service EasyJavaDropBoxServiceImpl upload = new EasyJavaDropBoxServiceImpl(token); saveToDropbox(upload);
O código com o método main completo ficou assim:
public static void main(String[] args) throws DbxException, IOException { String token = "your token here"; String path = "/"; EasyJavaDropBoxService easyJavaDropBoxService = new EasyJavaDropBoxServiceImpl(path, token); List<DbxEntry> listFiles = easyJavaDropBoxService.listFiles(); for (DbxEntry file : listFiles) { System.out.println(file.name); } //upload service EasyJavaDropBoxServiceImpl upload = new EasyJavaDropBoxServiceImpl(token); saveToDropbox(upload); }
Lembre-se de que é preciso gerar o token para sua conta. Quando tiver o token coloque como valor na variável token. Agora vamos criar o método que salva o arquivo no dropbox:
private static void saveToDropbox(EasyJavaDropBoxService uploadEasyJavaDropBoxService) throws DbxException, IOException { //creating new file File file = new File("camilotestedropbox2.txt"); file.createNewFile(); //writing content in file FileWriter fileWriter = new FileWriter(file); fileWriter.write("Test upload to dropbox api"); fileWriter.close(); try { FileInputStream fileInputStream = new FileInputStream(file); String fileName = file.toString(); //calling method from easyJavaDropboxAPI uploadEasyJavaDropBoxService.saveToDropbox(fileName, fileInputStream); } catch (FileNotFoundException e) { e.printStackTrace(); } }
Testando
Agora chegou a hora de testar. Rode a aplicação e vamos ver a saída no console:
Na imagem acima são listados os arquivos que tenho no meu dropbox. Agora vamos ver se no dropbox tem o novo arquivo que criei:
Pronto, arquivo enviado para o dropbox. Simples, não?
O projeto foi atualizado no Github:
https://github.com/ITSStartup/easyJavaDropboxAPIExample
Vou ficando por aqui. Espero que tenham gostado do post.
Abracos, see ya!!!
Ótimo artigo amigo, porém não entendi a parte uploadEasyJavaDropBoxService.saveToDropbox(fileName, fileInputStream); já que o saveToDropbox() é um método que foi criado. quando chamo ele pela instancia de uploadEasyJavaDropBoxService ele não existe, como resolvo isso?