Ir para conteúdo
lucasvilela01

Eu consigo enviar fotos e vídeos via Express e Node JS?

Recommended Posts

 Olá a todos. Preciso de algum direcionamento sobre um aplicativo similar a uma rede social (é uma rede social), um projeto da equipe que eu trabalho. Preciso fazer o envio de fotos e vídeos para um servidor de arquivos (por exemplo, um Apache da vida) e atualmente estou usando somente Node JS e Express nesse projeto.

 

Meus companheiros (desenvolvedores Android e iOS) enviam no momento as imagens como Base64 codificado e o banco MongoDB recebe e traz essa informação para eles. Na última reunião com os donos do projeto, nos notificaram a necessidade do envio de vídeos também.

 

 Sabendo que Base64 demora para ser decodificado e pesa muito nas queries, como posso fazer o envio de arquivos para servidores, sem passar necessariamente por HTML (como todos os tutoriais que eu vi na internet mostram)?

 

  Tem jeito? Agradeço desde já! <3 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 10/01/2019 at 14:47, lucasvilela01 disse:

Sabendo que Base64 demora para ser decodificado e pesa muito nas queries, como posso fazer o envio de arquivos para servidores

Se for uma API, o correto é  enviar como base64 mesmo, no servidor faça a validação e, se estiver tudo ok, faça o decode e salve o arquivo no servidor ou em outro cloud, e nome do arquivo no banco. 

Trazer todo a base64 como fora enviado na query, você terá inúmeros problemas, e o cache é um deles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Claudia França
      Pessoal escrevi o código,  (  <style id=”antiClickjack”>body{display:important;}</style>
      <script type=”text/javascript”>
      if (self === top) {
      var antiClickjack = document.getElementById(“antiClickjack”);
      antiClickjack.parentNode.removeChild(antiClickjack);
      } else {
      top.location = self.location;
      }
      </script> ) em um site o head por exigência da empresa de cartão, mas tenho percebido que com um tempo o site para de acionar o java script para carregar outra pagina.  Isso aconteceu depois desse código. Eu tenho que escrever algo no corpo no site para isso nao mais acontecer e deixar o anticlick habilitado. ?
    • Por Carcleo
      jQuery:
          // JavaScript Document          $(document).ready(function (e) {                  $("#idPastor").on("change", function () {                          $.ajax({                 url: "_scripts/_php/_validacoes/buscarDadosRedes.php",                 type: "POST",                 dataType: "json",                 data: {                       idPastor: $("#idPastor").val()                 },                 beforeSend: function() {                     $("#imgCarregando").css('display','block');                 },                 success: function (result) {                     $("#imgCarregando").css('display','none');                     $('#idRede').find('option').remove();                                          if (result == null){                         $("#idRede").append("<option value=>Sem Redes</option>");                     } else {                         $("#idRede").append("<option value=>Escolha a Rede</option>");                         result.forEach(function(option){                             $("#idRede").append("<option value=" + option["idRede"] + ">" + option["nome"] + "</option>")                         });                     }                 }                              });                          });                       $("#idRede").on("change", function () {                                                $.ajax({                 url: "_scripts/_php/_validacoes/buscarDadosRegioes.php",                 type: "POST",                 dataType: "json",                 data: {                       idRede: $("#idRede").val()                 },                 beforeSend: function() {                     $("#imgCarregando").css('display','block');                 },                 success: function (result) {                     $("#imgCarregando").css('display','none');                     $('#idRegiao').find('option').remove();                     if (result == null){                         $("#idRegiao").append("<option value=>Sem Regiões</option>");                     } else {                         $("#idRegiao").append("<option value=>Escolha a Região</option>");                                                 result.forEach(function(option){                             $("#idRegiao").append("<option value=" + option["idRegiao"] + ">" + option["nome"] + "</option>")                         });                     }                 }                              });                          });                       $("#idRegiao").on("change", function () {                                                       $.ajax({                 url: "_scripts/_php/_validacoes/buscarDadosAreas.php",                 type: "POST",                 dataType: "json",                 data: {                       idRegiao: $("#idRegiao").val()                 },                 beforeSend: function() {                     $("#imgCarregando").css('display','block');                 },                 success: function (result) {                     $("#imgCarregando").css('display','none');                             $('#idArea').find('option').remove();                                 if (result == null){                             $("#idArea").append("<option value=>Sem Áreas</option>");                     } else {                                     $("#idArea").append("<option value=>Escolha a Área</option>");                             result.forEach(function(option){                             $("#idArea").append("<option value=" + option["idArea"] + ">" + option["nome"] + "</option>")                         });                     }                 }                              });                          });                       $("#idArea").on("change", function () {                                                   $.ajax({                 url: "_scripts/_php/_validacoes/buscarDadosSetores.php",                 type: "POST",                 dataType: "json",                 data: {                       idArea: $("#idArea").val()                 },                 beforeSend: function() {                     $("#imgCarregando").css('display','block');                 },                 success: function (result) {                     $("#imgCarregando").css('display','none');                     $('#idSetor').find('option').remove();                                             if (result == null){                         $("#idSetor").append("<option value=>Sem Setores</option>");                     } else {                         $("#idSetor").append("<option value=>Escolha a Setor</option>");                                 result.forEach(function(option){                             $("#idSetor").append("<option value=" + option["idSetor"] + ">" + option["nome"] + "</option>")                         });                     }                 }                              });                          });                       $("#idSetor").on("change", function () {                                                       $.ajax({                 url: "_scripts/_php/_validacoes/buscarDadosCelulas.php",                 type: "POST",                 dataType: "json",                 data: {                       idSetor: $("#idSetor").val()                 },                 beforeSend: function() {                     $("#imgCarregando").css('display','block');                 },                 success: function (result) {                     $("#imgCarregando").css('display','none');                     $('#idCelula').find('option').remove();                             if (result == null){                         $("#idCelula").append("<option value=>Sem Celulas</option>");                     } else {                         $("#idCelula").append("<option value=>Escolha a Célula</option>");                                 result.forEach(function(option){                             $("#idCelula").append("<option value=" + option["idCelula"] + ">" + option["nome"] + "</option>")                         });                     }                 }                              });                          });                   }); Esse script, faz a população via $.ajax do jQuery de combos no form.
      Tudo funciona bem.
      Mas considere o o form abaixo:

       
      Imagine o que o usuário preencheu todos os campos e de repente resolve tocar a opção do select de Redes como está na figura.
      Porém, a opção Rede 2 NÃO possui Regiões Cadastradas ainda.
      No entanto, note que todos os campos abaixo estão preenchidos e isso não negaria um possível submit do form com dados errados?
      Ainda,  imagine a situação onde a opção Rede 2 POSSUI outas Regiões Cadastradas o que comprometeria a escolha dos selects que seguem
       
      Como contornar esse problema?
       
    • Por igoraraujowd
      Pessoal,
       
      Estou trabalhando em um teste A/B e preciso fazer uma modificação no código do menu. Estou utilizando o Mega Site Menu e preciso que o site fique sempre com o hamburger menu ainda que em desktop.
      https://codyhouse.co/gem/css-mega-site-navigation
       
      Pra fazer isso, eu precisaria fazer 2 alterações no código abaixo:
      https://ghostbin.com/paste/fjy3t
      1 - Alterar o valor da variável MqL
      2 - Anular as linhas abaixo na função moveNavigation:
      //navigation.insertBefore('.menu--mobile-header-cta'); //$('.nav-overlay').removeClass('is-visible'); A questão é que eu não posso fazer essas alterações diretamente no código e precisaria inserir algo em tags <script> que sobscrevesse a função e alterasse os pontos acima. É possível?
    • Por clickanapolis
      Pessoal peguei esse codigo de auto somar valor com quantidade na internet e não estou conseguindo ajustar ele.
       
      Ate que no total eu consegui incluir 2 casas decimais.
       
      Mais no subtotal não, e alem disso gostaria de colocar ele com extensão em moeda real o valor tipo:
       
      1500 para 1.500,00
       
      como eu faria:
       
      <script type="text/javascript"> $(window).load(function(){ function id( el ){ //return document.getElementById( el ); return $( el ); } function calcTotal( un01, qnt01 ) { return un01 * qnt01; } function getElementParent(event){ return event.srcElement.parentNode.parentNode.getAttribute('id'); } function getValorUnitario(elParent){ return $('#'+elParent+' .class_unit input').val(); } function getQuantidade(elParent){ return $('#'+elParent+' .class_quant input').val(); } function setFieldTotal(elParent, valueUnit, valueQuant){ id('#'+elParent+' .class_total input').val(calcTotal( valueUnit , valueQuant)); setTotalFinal(); } function setTotalFinal(){ var total = 0; $('#table-shop tr .class_total input').each(function(){ if(this.value != ''){ var valor = this.value; total += parseFloat(valor); } }); $('#total .value_total').html(total.toFixed(2)); $('#total .value_total').val(total.toFixed(2)); } $(document).ready(function(){ id('#table-shop tr .class_unit').keyup(function(event) { var elemenPai = getElementParent(event); var valueUnit = getValorUnitario(elemenPai); var valueQuant = getQuantidade(elemenPai); setFieldTotal(elemenPai, valueUnit , valueQuant); }); id('#table-shop tr .class_quant').keyup(function(event) { var elemenPai = getElementParent(event); var valueUnit = getValorUnitario(elemenPai); var valueQuant = getQuantidade(elemenPai); setFieldTotal(elemenPai, valueUnit , valueQuant); }); }); }); </script>  
    • Por Pedroalves
      o problema é o seguinte eu criei um gráfico e agora quero buscar dados mas so consigo por a funcionar se por assim estou a usar o angular 7, nodejs e mongodb
      let TotalSell = function() { var data = { labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], datasets: [{ label: 'My First dataset', fillColor: 'rgba(220,220,220,0.2)', strokeColor: 'rgba(220,220,220,1)', pointColor: 'rgba(220,220,220,1)', pointStrokeColor: '#fff', pointHighlightFill: '#fff', pointHighlightStroke: 'rgba(220,220,220,1)', data: [65, 59, 80, 81, 56, 55, 40, 84, 64, 120, 132, 87] }] }; var options = { maintainAspectRatio: false, // Sets the chart to be responsive responsive: true, ///Boolean - Whether grid lines are shown across the chart scaleShowGridLines: true, //String - Colour of the grid lines scaleGridLineColor: 'rgba(0,0,0,.05)', //Number - Width of the grid lines scaleGridLineWidth: 1, //Boolean - Whether the line is curved between points bezierCurve: false, //Number - Tension of the bezier curve between points bezierCurveTension: 0.4, //Boolean - Whether to show a dot for each point pointDot: true, //Number - Radius of each point dot in pixels pointDotRadius: 4, //Number - Pixel width of point dot stroke pointDotStrokeWidth: 1, //Number - amount extra to add to the radius to cater for hit detection outside the drawn point pointHitDetectionRadius: 20, //Boolean - Whether to show a stroke for datasets datasetStroke: true, //Number - Pixel width of dataset stroke datasetStrokeWidth: 2, //Boolean - Whether to fill the dataset with a colour datasetFill: true, // Function - on animation progress onAnimationProgress: function() { }, // Function - on animation complete onAnimationComplete: function() { }, //String - A legend template legendTemplate: '<ul class="tc-chart-js-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>' }; // Get context with jQuery - using jQuery's .get() method. var ctx = $("#TotalSell").get(0).getContext("2d"); // This will get the first returned node in the jQuery collection. var chart1 = new Chart(ctx).Line(data, options); //generate the legend var legend = chart1.generateLegend(); //and append it to your page somewhere $('#TotalSellLegend').append(legend); }; <div class="col-sm-6"> <h5 class="over-title margin-bottom-15" style="text-align:center;">Total Sell</h5> <canvas id="TotalSell" class="full-width"></canvas> <div class="margin-top-20"> <div class="inline pull-left"> <div id="TotalSellLegend" class="chart-legend"></div> </div> </div> </div> o meu problema é como ponho a mostrar dados sem inserir dados aqui data: [65, 59, 80, 81, 56, 55, 40, 84, 64, 120, 132, 87] }] o meu objectivo é quando por a minha base de dados ele for buscar los a minha base de dados ou seja não quero ter que inserir manualmente no data:[] basicamente quero passar de dados staticos para dinamicos o que estou a fazer de errado
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.