【问题标题】:How to store base64 data in sql server如何在sql server中存储base64数据
【发布时间】:2017-08-06 04:21:31
【问题描述】:

我用 HTML 创建了一个录音机。 首先,它将请求流,在允许请求流后,它将显示两个按钮,如“开始”和“停止”。录制完成后,它将 blob URL 转换为 base64 数据。

现在我想要的是,我有一个表 SQLserver 我想在该表中存储 base64 数据。我正在使用 ASP .NET MVC 创建这个网页。 base64 数据在 javascript 中。我不知道如何连接到服务器。

请帮助我。

谢谢。

HTML页面代码:

  <body>
  <h1> Audio Recorder</h1>
  <p> For now it is supported only in Firefox(v25+) and Chrome(v47+)</p>
  <div id='gUMArea'>
  <div>
  Record:
  </div>
  <button class="btn btn-default mediaAudio" id='gUMbtn'>Request Stream</button>
  </div>
  <div id='btns'>
  <button class="btn btn-default" id='start'>Start</button>
  <button class="btn btn-default" id='stop'>Stop</button>
  </div>
  <div>
  <ul class="list-unstyled" id='ul'></ul>
  </div>
  <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <script src="~/script.js"></script>
  </body>

JavaScript 代码:

  'use strict'

  let log = console.log.bind(console),
  id = val => document.getElementById(val),
  ul = id('ul'),
  gUMbtn = id('gUMbtn'),
  start = id('start'),
  stop = id('stop'),
  stream,
  recorder,
  counter=1,
  chunks,
  media;


  gUMbtn.onclick = e => {
  let mv = id('.mediaAudio'),
  mediaOptions = {
  audio: {
  tag: 'audio',
  type: 'audio/mpeg',
  ext: '.mp3',
  gUM: {audio: true}
  }
  };
  media = mediaOptions.audio;
  navigator.mediaDevices.getUserMedia(media.gUM).then(_stream => {
  stream = _stream;

  id('btns').style.display = 'inherit';
  start.removeAttribute('disabled');
  recorder = new MediaRecorder(stream);
  recorder.ondataavailable = e => {
  chunks.push(e.data);
  if (recorder.state == 'inactive') saveLink()
  };
  log('got media successfully');
  }).catch(log);
  }

  start.onclick = e => {
  start.disabled = true;
  stop.removeAttribute('disabled');
  chunks=[];
  recorder.start();
  }


  stop.onclick = e => {
  stop.disabled = true;
  recorder.stop();
  start.removeAttribute('disabled');
  }

  function saveLink() {

  let blob = new Blob(chunks, { type: media.type })
  ;
  var reader = new window.FileReader();
  reader.readAsDataURL(blob);
  reader.onloadend = function () {
  var base64data = reader.result;
  console.log(base64data.substr(base64data.indexOf(',') + 1));
  alert(base64data.substr(base64data.indexOf(',') + 1));
  }
  }

现在base64data变量中有base64数据,我想存储这个变量sql server。

问候。

【问题讨论】:

    标签: javascript html sql-server asp.net-mvc


    【解决方案1】:

    您的解决方案有 2 个部分:

    • 从 blob url 中获取 blob

    • 将该 blob 发送到服务器

    对于第一部分,您可以使用“Fake ajax”技术,只需将 blob url(download.ogg 的 url)传递为 ajax 的 url

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){
        if (this.readyState == 4 && this.status == 200){
            var result = this.response
        }
    }
    xhr.open('GET', 'blob:http://example.com/bbdaabf8-ddf2-40d3-975d-ade742417c71');
    xhr.responseType = 'blob';
    xhr.send(); 
    

    ajax 完成后,result 将保存一个 blob,现在您只需使用 this answer 将其发送到服务器即可

    【讨论】:

    • 它不工作。能否请您告诉如何将录制的文件存储在本地磁盘中。提前致谢。
    猜你喜欢
    • 2014-07-16
    • 2010-10-26
    • 2014-04-27
    • 2019-10-10
    • 1970-01-01
    • 2021-07-31
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多