Azure blob文件下载链接

时间:2013-09-04 05:19:25

标签: http azure azure-storage

我有一个blob,我已经存储在Azure blob存储中(使用开发模拟器)。

它全部保存了,我可以在blob存储区的服务器资源管理器中看到它(file.mp3,如果这很重要)。

然后我在我的网站链接到它但是当我点击链接时我得到206(部分内容)回来(显然没有文件)。如果我右键单击“保存”,因为一切都很满意并且文件已下载。

enter image description here

我确信这是一个很缺乏的东西,我很想念,但是我看不到它。

1 个答案:

答案 0 :(得分:2)

这是因为,浏览器不会整体下载媒体文件,浏览器请求Blob存储正确响应一个字节和标题的范围。这称为HTTP流式传输,其中部分文件将在范围内下载并将逐步播放。在这种形式的流式传输中,您可以跳过部分文件并结束播放媒体的末尾部分,而无需下载整个文件。

想象一下,你正在看一部大电影,那部电影是100 MB。你想观看最后一分钟,你可以在时间线上向前移动玩家的跟踪器,浏览器只会按照媒体文件中的时间线结构下载最后几兆字节。通常MP4&类似的媒体容器支持文件字节位置跟踪。

浏览器&如果可能,大多数媒体播放器都会尝试传输媒体文件。

您可以尝试以下下载属性, 参考:http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

<a href="http://www.google.com/.../logo2w.png" download="MyGoogleLogo">download me</a>

您可以尝试以下代码,参考:Chrome extension: How to save a file on disk

var url = window.webkitURL || window.URL || window.mozURL || window.msURL;
var a = document.createElement('a');
a.download = 'MyHangouts-MomentCapture.jpg';
a.href = url.createObjectURL(dataURIToBlob(data.active, 'jpg'));
a.textContent = 'Click here to download!';
a.dataset.downloadurl = ['jpg', a.download, a.href].join(':');


/**
 * Converts the Data Image URI to a Blob.
 *
 * @param {string} dataURI base64 data image URI.
 * @param {string} mimetype the image mimetype.
 */
var dataURIToBlob = function(dataURI, mimetype) {
  var BASE64_MARKER = ';base64,';
  var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
  var base64 = dataURI.substring(base64Index);
  var raw = window.atob(base64);
  var rawLength = raw.length;
  var uInt8Array = new Uint8Array(rawLength);

  for (var i = 0; i < rawLength; ++i) {
    uInt8Array[i] = raw.charCodeAt(i);
  }

  var bb = new this.BlobBuilder();
  bb.append(uInt8Array.buffer);
  return bb.getBlob(mimetype);
};
相关问题