[컴][웹] applet 으로 local file access 하기 - jQuery.twFile 테스트 예제 만들기





여기서는 jQuery.twFile.js 를 사용 해 보자. twFile.js 에 대해서는 아래 링크를 참고하자.


기본적으로 여기서는 chrome 에서 twFile.js 를 사용 해 볼 것이다. 이 twFile 이 하는 일은 local file system 에 접근해서 file 에 대한 처리를 할 수 있다. 여기 예제에서는 save 와 관련된 작업을 test 해 볼 것이다.

여기서 사용한 source 는 아래에서 다운로드 할 수 있다. make.bat 를 사용하면 out/classes 에 최종파일이 만들어진다.


jQuery.twFile.js 는 jquery 를 필요로 하기 때문에 HTML file 에 jquery 를 include 시켜줘야 한다. 그리고 chrome 에서 file 을 다룰 때 TiddlySaver applet 을 사용하기 때문에 TiddlySaver applet 을 같이 배포해야 한다.




실행 예제


이제 부터 간단한 example 을 만들어 보자. 필요한 file 은 아래와 같다.
  1. applet 을 호출하는 html page
  2. TiddlySaver.jar
  3. jQuery.twFile.js
  4. jquery javascript

Sources



jQuery.twFile.js, jquery

두 파일은 그냥 가져다 사용하면 된다.

jQuery.twFile 의 firefox 부분은 수정이 필요하다. jQuery.twFile 에서 이제는 사용할 수 없는 XPCOM 을 사용하고 있기 때문이다.

enablePrivilege is deprecated


  1. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect") does not works anymore afer ff15.0.1 update ? | Firefox 도움말 포럼 | Mozilla 도움말,
    Firefox 17 부터는 privileged code 가 web page 같은 non-privileged page 에서는 실행될 수 없다고 한다.
  2. Bypassing Security Restrictions and Signing Code | MDN 에 따르면 Privilege Manager 는 Firefox 12 에서 deprecated 됐다고 한다.
  3. accessing Mozilla xpcom extensions in Firefox 16 • mozillaZine Forums 에서도 firefox 17 부터 더이상 Components class 를 사용하지 못한다고 이야기한다.
  4. Chapter 4: Using XPCOM—Implementing advanced processes - Mozilla | MDN 에서도 더이상 web page 에서 XPCOM 을 이용할 수 없다고 한다.

현재(2014. 07. 18), firefox 30 이 release 된 상태이다.





HTML file

jQuery.twFile.js 에서 applet 을 호출할 때 id 를 'TiddlySaver' 로 호출하기 때문에 아래처럼 'TiddlySaver' 로 맞춰줘야 한다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html">
    <script src="js/jquery-1.8.3.js"></script>
    <script src="js/jQuery.twFile.js"></script>
    <script language="javascript">
 function enterNums(){
        
            $.twFile.save("c:\\temp\\lsrc\\ttt.txt", "Hi ! ddd");

 }
 </script>

  </head>
  <body>
    <noscript>A browser with JavaScript enabled is required for this page to operate properly.</noscript>
    <script src="https://www.java.com/js/deployJava.js"></script>
    <script>
        <!-- applet id can be used to get a reference to the applet object -->
        var attributes = { id:'TiddlySaver', code:'jstojava.TiddlySaver', width:1, height:1} ;
        var parameters = {jnlp_href: 'tiddlySaver.jnlp'} ;
        deployJava.runApplet(attributes, parameters, '1.7');
    </script>

    <p><a href="javascript:enterNums();">Launch Example</a></p>
  </body>
</html>



tiddlySaver.jnlp

jnlp 에서도 권한 설정을 해줘야 한다. 
<security>
    <all-permissions/>
</security> 


TiddlySaver.jar

이 jar file 에서는 local file 을 접근할 수 있어야 해서 permission 설정이 필요하다. 그리고 applet 에 대한 signing 작업도 필요하다.


permission 설정

permission 설정은 Manifest 파일에 권한을 넣어주면 된다. 이 부분은 make.bat 의 jar 을 만드는 부분을 참고하기 바란다.
Permissions: all-permissions


signing

test 를 위해서 자체적으로 signing 을 해서 사용할 것이다. 다만 이렇게 자체적으로 signing 한 jar 을 사용하기 위해서는 제어판에 있는 java 에 "보안" 수준을 "중간" 으로 낮춰줘야 한다.

signing 은 sample source 의 signing.bat 를 참고하기 바란다.






댓글 없음:

댓글 쓰기