2013-05-21 55 views
0

我需要允许用户使用javascript查看文件,但不能通过直接链接下载文件。将文件提供给javascript

I understand that using htaccess and changing the permissions will not allow this to ever be possible due to the fact that Javascript is client side

因此,唯一的解决方案是只允许服务器访问该文件,并通过php将其提供给javascript。

目前,javascript的插件,迫使我一个网址发送给它:

loader.load('example.stl'); 

的外部JavaScript然后执行此:

prototype.load = function (url, callback) { 

var scope = this; 

var xhr = new XMLHttpRequest(); 

function onloaded(event) { 

    if (event.target.status === 200 || event.target.status === 0) { 

      var geometry = scope.parse(event.target.responseText); 

      scope.dispatchEvent({ type: 'load', content: geometry }); 

      if (callback) callback(geometry); 

    } else { 

     scope.dispatchEvent({ type: 'error', message: 'Couldn\'t load URL [' + url + ']', 
      response: event.target.responseText }); 

    } 

} 

xhr.addEventListener('load', onloaded, false); 
xhr.addEventListener('progress', function (event) { 

    scope.dispatchEvent({ type: 'progress', loaded: event.loaded, total: event.total }); 

}, false); 

xhr.addEventListener('error', function() { 

    scope.dispatchEvent({ type: 'error', message: 'Couldn\'t load URL [' + url + ']' }); 

}, false); 

xhr.overrideMimeType('text/plain; charset=x-user-defined'); 
xhr.open('GET', url, true); 
xhr.send(null); 

}; 

显然的JavaScript文件的文件中读取XML,但是,我没有足够的经验,用JavaScript来操纵它以适应我的需求。

+2

实际上,试图阻止用户下载文件非常困难 - 如果他们真的想要下载文件,他们通常可以解析JavaScript或HTML代码以获取真实的URL。几乎不可能阻止那些决心窃取你的东西的人 - 如果你确实需要向他们展示其他方法,例如文档上的水印和PDF和Word文档中的限制以阻止复制。 –

+0

它的琐碎解锁一个锁定的pdf。 – 2013-05-21 00:14:31

+0

我可以在上传过程中对文件进行加密,并在客户端要求时解密它吗? – James

回答

1

如果“了解到使用htaccess以及更改权限将不会允许这样的永远是可能的,因为事实上,JavaScript客户端”,你也应该明白,这是不可能的,以“只允许服务器访问该文件,并通过php“将其提供给javascript。

你问的只是不可能 - 如果Javascript可以访问它,浏览器的其余部分可以访问它。 Javascript并没有比访问者浏览器的其他部分更多或更少的权限,即使他可以在调试器控制台或插件中输入相关的Javascript。

+0

谢谢你的见解:) – James

+0

我同意@Niels。在这种情况下,我想我可能会将文件放在Web服务器无法直接访问的目录中,然后编写一个服务器端程序来读取它,并在发送给客户端之前将其混淆,然后javascript会对其进行解码。它不会阻止人们直接下载它,但他们可能不会费力去解码它。 Ascii的值加上1或者这些行的东西。 – Tap

相关问题