2013-05-21 3 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.

Таким образом, единственным оставшимся решением является разрешение доступа только к серверу и его обработка в javascript через php.

В данный момент Javascript плагин заставляет меня отправить URL к нему:

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); 

}; 

Очевидно, что Java-файл считывает файл как XML, однако, я недостаточно опытна с Javascript, чтобы манипулировать им в соответствии с моими потребностями.

+2

Реально, это довольно сложно попытаться остановить загрузку файла пользователем - часто они могут анализировать JavaScript или код HTML для фактических URL-адресов, если они действительно хотят его загрузить. Почти невозможно остановить тех, кто решил украсть ваши вещи - если вам действительно нужно показать им использовать другие методы, такие как водяные знаки на документах и ​​ограничения в документах PDF и Word, чтобы препятствовать копированию. –

+0

его тривиально, чтобы разблокировать заблокированный pdf. –

+0

Могу ли я зашифровать файл во время загрузки и дешифрования, когда это требуется клиенту? – James

ответ

1

Если вы «понимают, что использование Htaccess и изменение разрешения не позволит это когда-либо будет возможно в связи с тем, что браузер на стороне клиента», вы также должны понимать, что это не представляется возможным «разрешить только сервер, чтобы получить доступ к файлу и передать его в javascript через php «.

То, что вы просите, просто невозможно - если Javascript может получить к нему доступ, остальная часть браузера может получить к нему доступ. Javascript не имеет больше или меньше привилегий, чем остальная часть браузера посетителя, и даже если бы он мог просто ввести соответствующий Javascript в его консоль отладчика или в плагин.

+0

Спасибо за понимание :) – James

+0

Я согласен с @Niels. В этой ситуации я думаю, что могу разместить файл в каталоге, недоступном веб-серверу напрямую, а затем написать серверную программу для его чтения и обмануть черт из него перед отправкой на клиент, где javascript будет декодировать его. Это не помешает людям загружать их напрямую, но они, вероятно, не захотят принять решение об их расшифровке. Значения Ascii плюс 1 или что-то в этом роде. – Tap

Смежные вопросы