2007年4月22日 星期日

Use dojo for file upload

沒有留言:
最近這一兩天都在處理檔案上傳的部分,對於基本的檔案上傳功能利用Jakarta Commons FileUpload就可以達成,但是要使用ajax的時候我選擇了dojo作為我的web ajax框架。通常在看完dojo的demo後,真是另我感到驚為天人。這麼樣的方便,看起來是省下一些非同步呼叫的語法。

基本上一開始我直接參考的Ajax教學是IBM的一系列Ajax文章,當然你也可以有其他的選擇,像是ajax學習筆記。後來真的開始撰寫我的web form時,是直接使用dojo。dojo是個框架,他是個不錯用的框架,當然也提供一些widget可以使用。在看完dojo getting started的Hello World後,想必對dojo.io.bind();的使用有一定的了解。但是納悶的是如何才能使用upload的傳輸呢transport?很早 Alex's file upload with dojo 已經說明了一個簡單的方法就可以使用dojo.io.bind()來處理有file field的form了。這點非常不容易,他述說上只要加上
dojo.require("dojo.io.IframeIO");
的宣告就可以了。而為何只是一般的dojo.io.bind()無法處理有檔案傳輸的form這點可以參考dojo book Introduction to dojo.io.bind 或Alex所述, XMLHTTP transport無法處理file 傳輸,這點就可以透過dojo的 IframeIO來處理了。但事實上還是發生一些問題,在我實際的使用上發現,問題還有為解決。一開始未加入IframeIO宣告時,是按鈕下去連傳都沒傳就會說錯誤,但是簡單宣告IframeIO後,是可以傳輸給server去作處理了。結果檔案也成功接收獲得,但是在dojo 的callback處理時,就是一直出現error: [object ],這點在Alex上得留言也知道有些人發生,討論的也很熱烈。就是得不到一個完整的解決方式。其中也從

http://download.dojotoolkit.org/release-0.2.2/dojo-0.2.2-ajax/tests/io/test_IframeIO.html

測試IframeIO,結果也一樣有error [object] 回傳處理問題,最後也得知這是一個bug。可以手動從iframe讀取資料。不過當然還有一些細節,server response需要把minetype 從 text/plain 改成 text/html ,再來處理結果的回傳,在server還要以textarea包覆起來。而回傳成html之後,在從iframe中取出textarea的質處理即可。看起來就像:
dojo.io.bind({

formNode: dojo.byId( 'myForm' ),

mimetype: 'text/html',

load: function(type, doc) {
window.alert( doc.getElementsByTagName('textarea' )[0].value );
}

error: function(type, err) {
window.alert("Failure:" + err.message);
}

});
但不要忘了加上一個隱藏的iframe在網頁中,而form的target指向他。
如此就終於可以用dojo來正常運作了。

在此因為dojo跟 file upload有關的中文文章很少,一直沒有很好的實際 source code來參考。搞不好已經有新的解決方式,至少現在我可以正常的處理我的 file upload 和 IframeIO return 了。
而之前一直在傳輸完檔案後的錯誤,的確是因為minetype 設成 text/plain就不行了。

2007年4月7日 星期六

Semantic Web

沒有留言:
在 Semantic Web的研究裡,大家關注的是如何建立語義樹、推理查詢等,有效率的作語議分析。
在知識管理的觀念裡,要建立龐大的知識樹或是知識庫直屬不易。
然而其中佼佼者,Google的發展出來的研究是最成功的實例。

從Web上有效率的搜尋自己所要的資訊,從以前的搜尋引擎,已經進步到利用tag來搜尋。拜Web 2.0所賜,因為多媒體(書籤、照片、甚至影音),除了文字格式外,難以用語義來搜尋,所以用tag附註變成一種新的方式。利用tag來標註,便可以替這些多媒體附加些語義,用以搜尋。並增加搜尋引擎的敏銳,達到正確性而過濾不必要的資訊。

在數位學習的語義研究裡,有一方面就是把教材內容加上註解,建進知識樹或語義樹裡,然而加上語義的分析和搜尋推理,一句問話把它拆解成各種辭類,並而依照辭性來做判斷推理,甚至註解的東西會變成搜尋的關鍵字,成為回答問題的搜尋關鍵。

如今再看看Google NoteBook 服務的發展,就知道 Google未來下一部想做什麼了...
利用 Web 建立全球的知識庫,未來網路是可以自動回答問題的,人工智慧底下一部份。
這也是因為他們已經有良好的搜尋引擎作後備支援,Google NoteBook 未來是可以加值的。