Boa tarde Alex!
Com base no que me passou eu consegui fazer e enviar o arquivo tão logo ele seja capturado está funcionando.
Só que para fazer a sincronia eu preciso pegar o arquivo da pasta onde ele está para enviar quando não estiver sincronizado, ou seja, montei um sincronizado das imagens conforme fizemos nas aulas.
O problema é que aí ele envia para o meu servidor, mas não o arquivo exatamente.
Ele envia como sendo o nome do arquivo correto, mas o conteúdo é outro, na verdade é a string do caminho e nome dele onde se encontra no celular.
Tenho certeza que é algo que comi bola, mas não estou conseguindo encontrar e queria ver contigo se pode me ajudar nesse quesito.
Esse é o código do sincronizador das imagens
public void Sinc_Ger() {
Roteiro_Dao dao = new Roteiro_Dao(context);
List<Img_mod> imgs = dao.Lista_Img_NS();
dao.close();
if (imgs.size() > 0) {
for (Img_mod img : imgs) {
Img_Sinc(img.getPasta(), img.getArquivo());
}
}
O conteúdo do img.getPasta() é:
/storage/emulated/0/Inprint/Logistica/Imagens/34032_1_1.jpg
Já o conteúdo do img.getArquivo() é:
34032_1_1.jpg
Quando ele chega no servidor para mim, ele chega como 34032_1_1.jpg corretamente, mas de 63 bytes, então eu o renomeei para um arquivo .txt e o conteúdo dele era exatamente o conteúdo do getPasta()...rs...
Ou seja, ele enviou o caminho dentro do arquivo e não estou conseguindo encontrar onde estou errando.
O código do Img_Sinc() é esse:
public void Img_Sinc(String caminho, String corpo) {
File file = new File(String.valueOf(caminho));
RequestBody requestFile = RequestBody.create(MediaType.parse(String.valueOf(file)), caminho);
RequestBody descBody = RequestBody.create(MediaType.parse("text/plain"), corpo);
Call call = new Retro_Img().getImg_Service().Upl_Img(requestFile, descBody);
//Finalizando a call de envio do arquivo de imagem
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Log.i("Assinatura: ", "Assinatura enviada com Sucesso!");
}
@Override
public void onFailure(Call call, Throwable t) {
Log.e("Assinatura Falha: ", t.getMessage());
}
});
}
Se eu usar esse código na Activity que tira a foto, tudo bem, ele sobe a imagem corretamente.
Fui então coloca-lo numa outra classe para poder fazer a sincronia e aí ele funciona com esse erro que comentei, de o conteúdo do arquivo que sobe é na verdade um texto com o caminho onde a imagem está armazenada no celular.