GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Upload de pdf pelo javascript para o sql usando node

ajax
jquery
nodejs
sql
javascript
Tags: #<Tag:0x00007f653aec4f40> #<Tag:0x00007f653aec4db0> #<Tag:0x00007f653aec4b58> #<Tag:0x00007f653aec49c8> #<Tag:0x00007f653aec46f8>
#1

Estou fazendo um projeto de curso , e preciso fazer o upload de um pdf pelo javascript , em seguida adicionar no sql utilizando node , porém no javascript o binário referente ao arquivo aparece errado.

Node: router.post(’/reclamacoes/inserirArquivo/’,(req,res) =>{
const id = req.body.id;
const file = req.body.arquivo;
execSQLQuery(insert into SGArquivos (Id,Nome,Arquivo) values (${id},'${id}'+'.pdf', CONVERT(VARBINARY(max), '${file}')),res);
})

SQL:
Tabela:
CREATE TABLE SGArquivos
(
Id int primary key,
Nome varchar(50) not null,
Arquivo varbinary(max) not null
)

Javascript e HTML:

<span>Nota fiscal:</span> <input type="file" id="files" name="files[]" value="Enviar um arquivo"/> <div id="progress_bar"><div class="percent">0%</div></div>] <span id="list"></span>

jQuery.support.cors = true;

    var url1 = "http://localhost:54000/reclamacoes/id/";
    var idArquivo=null;
    $(document).ready(function(){
        $.getJSON(url1, function(result){
                var arr = result;
                idArquivo=arr[0].UltimoId+1;
                alert(idArquivo);
            });             
    });

    var url="http://localhost:54000/reclamacoes/inserirArquivo/";
    var progress = document.querySelector('.percent');

    function errorHandler(evt) {
        alert('teste1');
    switch(evt.target.error.code) {
     case evt.target.error.NOT_FOUND_ERR:
        alert('File Not Found!');
        break;
     case evt.target.error.NOT_READABLE_ERR:
        alert('File is not readable');
        break;
     case evt.target.error.ABORT_ERR:
        break; // noop
     default:
        alert('An error occurred reading this file.');
    };
}

    function updateProgress(evt) {
        alert('teste2');
    // evt is an ProgressEvent.
    if (evt.lengthComputable) {
    var percentLoaded = Math.round((evt.loaded / evt.total) * 100);
    // Increase the progress bar length.
    if (percentLoaded < 100) {
        progress.style.width = percentLoaded + '%';
        progress.textContent = percentLoaded + '%';
        }
    }
}            
    function handleFileSelect(evt) {
        alert('teste3');
        progress.style.width = '0%';
        progress.textContent = '0%';
        alert('teste4');
        var files = evt.target.files; // FileList object

        // Loop through the FileList and render image files as thumbnails.
        f=files[0];

        var reader = new FileReader();
        reader.onerror = errorHandler;
        reader.onprogress = updateProgress;
        reader.onloadstart = function(e) {
            document.getElementById('progress_bar').className = 'loading';
        };
        reader.onload = function(e) {
        // Ensure that the progress bar displays 100% at the end.
        progress.style.width = '100%';
        progress.textContent = '100%';
        setTimeout("document.getElementById('progress_bar').className='';", 2000);
        document.getElementById('list').innerHTML = e.target.result;
        $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({"id": idArquivo},{"arquivo": e.target.result}),
        success: function(response){ console.log( response ); }
            });
        }
        reader.readAsText(f);
    }
    document.getElementById('files').addEventListener('change', handleFileSelect, false);
    </script>

Screenshot_7 resultado dos inserts
convertendo pra string isso deu ‘undefined’ , acredito que o valor da variavel que estou passando como parametro na inserção do arquivo na verdade está errado , o e.target.result deve estar passando valor errado.

0 Likes