2
respostas

cordova-plugin-file-transfer

Boa tarde, alguém fez uso deste plugin para fazer upload de arquivos através de um campo input file? Já tentei varias formas e não consegui sair da estaca zero, o problema pelo que eu pude notar e que não consigo pegar o caminho onde se encontra o arquivo ou um arquivo temporários.

function upload(fileURL ){
var win = function (r) {
    console.log("Code = " + r.responseCode);
    console.log("Response = " + r.response);
    console.log("Sent = " + r.bytesSent);
}

var fail = function (error) {
    alert("An error has occurred: Code = " + error.code);
    console.log("upload error source " + error.source);
    console.log("upload error target " + error.target);
}

var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.mimeType = "text/plain";

var params = {};
params.value1 = "test";
params.value2 = "param";

options.params = params;

var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://127.0.0.1/upload.php"), win, fail, options);
}

teria que passar o parâmetro fileURL que seria o caminho full do arquivo ou o data uri mais não estou conseguindo buscar este item.

2 respostas

Olá, João. Tudo bom?

Você está recebendo alguma mensagem de erro?

Eu olhei o seu código e comparei com um código meu usado para subir fotos. Não achei problemas, a única diferença é que no meu caso a rotina que sobe fotos gera um fileURI, e no seu caso você usa fileURL

Lembro de ter pesquisado uma vez sobre o input file, e lembro que as respostas foram negativas. Algo que você pode pensar em fazer é criar um explorador de arquivos, para deixar o usuário escolher o arquivo que ele quer subir.

Aqui tem um tutorial sobre isso:

http://rickluna.com/wp/2013/12/browsing-filesystems-in-phonegap/

Aqui tem um exemplo mais simples, supondo que o seu aplicativo tenha uma pasta para seus arquivos, creio que algo assim funcionaria:

    function EnviarArquivo(nome_do_arquivo_selecionado){
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
                var localFolder = "MINHA_PASTA_DE_DADOS";
                var nome_arquivo = localFolder + "/" + nome_do_arquivo_selecionado;
                fs.root.getFile(nome_arquivo,  {create: false}, gotFileEntry2, arquivo_fail);

            }, function (error) {
                alert(error.code);
            });

        }

        function gotFileEntry2(fileEntry) {
            //opcao 1
            var fileURL = fileEntry.entry.fullPath;
            //opcao 2
            var fileURL = fileEntry.toURL();

            //Sua funcao de upload
            upload(fileURL);
        }

        function arquivo_fail(evt) {
            alert('Erro ao abrir');
        }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software