月之氏族的gravatar头像
月之氏族 2018-05-30 20:11:32

如何使用 blob:http:// 隐藏一个mp3文件的真实地址?

我有一个需求,我要隐藏一个mp3的真实地址,不管使用什么方法都行。

我的这个mp3文件,可以通过我的网站去试听,和付费下载。

不管是试听还是下载都不能暴露文件的真实路径。

就是说我试听的HTML标签上的路径,如果单独拿出来,放在浏览器上,是不可以进行试听和下载的。

欢迎各位大佬提供一下思路,代码,之类的有用的东西。

再次致以真诚的谢意。

所有回答列表(4)
最代码官方的gravatar头像
最代码官方  LV168 2018年5月31日

你的这个功能和最代码的代码源文件上传下载类似。

1.文件保存在一个http路径访问不到的地址

2.文件访问通过id来识别,比如http://aaa.com/bbb/1.mp3,其中1就是id,然后可以读取到本地的File对象,之后返回该对象的二进制数据流

参考代码

最代码的上传的代码文件存储什么地方呢?

IT界小蚂蚁的gravatar头像
IT界小蚂蚁  LV6 2018年6月4日

对文件的路径加密

如果只能通过进入你的网站去访问这个连接,可以在后端加拦截器,拦截所有请求。加密:对资源的文件进行加密;或者放在web-inf下面,是不能通过请求直接访问资源

lonesafe的gravatar头像
lonesafe  LV11 2018年6月27日

这个blob开头的音视频文件,其实那都是欺骗你的,刚好我这刚做了一个流媒体方面的项目,就说一下我的理解。首先在源码中,video标签的src要么是空的  要么就没有src这个属性,为什么在审查元素能看到?其实blob:http他不是协议,是html5里面blob对象赋值给video后生成的uuid,浏览器的js给你贴一下,后台自己想办法实现吧 ,主要就是请求blob的问题,其他都很简单

<video controls id='test'>
<script>
var xhr = new XMLHttpRequest();
xhr.open("post","./video.do",true);
xhr.responseType = "blob";
xhr.onload = function(e) {
	//兄弟 重点来了。
	if(this.status == 200){//响应码200
		//获取blob对象
		var blob = this.response;
		//获取blob对象地址,并赋值给容器
		document.getElementById("test").src = URL.createObjectURL(blob);
	}
}
//如需提交数据(比如用于验证、流媒体id之类的东西)可以在send里面加
xhr.send();
</script>

 

maziwen的gravatar头像
maziwen  LV3 2019年2月26日

资源文件放在web-INF下面,可以实现只能通过跳转访问,不能通过URL直接访问的.

最近浏览
xuteng5240  LV2 2020年10月16日
Love wild  LV1 2020年10月16日
balalala  LV2 2020年7月29日
JackZ12  LV1 2020年5月31日
1985134186 2020年3月23日
暂无贡献等级
tianyongbao  LV2 2020年1月8日
凉虔呀  LV10 2019年12月12日
livedevil  LV1 2019年10月5日
liulei123456  LV1 2019年7月30日
lulu124309  LV1 2019年7月23日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友