2012-04-04 113 views
2

我想做的事情在我的瀏覽器兩件事情:HTML5/JavaScript的:打開文本文件,加載到文本區域/保存textarea的內容到文本文件

  • 加載一個文本文件轉換成文本區域(具有通過對作爲選對話框)一個文本到文本文件的
  • 保存的內容(必須通過再次對話框)
  • 加載視頻文件作爲選件和搶的文件路徑與視頻播放器使用(1

我一直在網上尋找一段時間。只有通過ActiveXObjects纔有一些解決方案,我不能使用(IE,認真?)。 HTML5文件API的可用性有限,因爲我無法訪問所選文件的路徑。

我還發現保存textareas對話框,但他們忽略換行符出於某種奇怪的原因,我不知道如何解決這個問題,如果可能的話。

因此,這裏有我的要求和選項:

  • 支持FF和Chrome
  • 的JavaScript,HTML5(和PHP,如果它是)
  • 可能的Silverlight,但我不能很熟悉,可能只複製和粘貼: -/
  • 它在Mac上工作,以及

回答

0

File API是HTML,它允許您訪問數據,然後您可以在JavaScript中操作二進制blob,但正如所寫的,根據您的要求,這在純JS和HTML中是不可能的。

大阻滯劑是「保存到文本文件」。我能做到這一點的唯一方法是打開一個調用服務器端語言(如PHP)的iFrame,將標題中的內容類型設置爲提示下載的類型。

Flash和Silverlight是在沙箱外運行的「客戶端」技術,這聽起來像是您現在唯一的選擇。

+0

好吧,這聽起來很糟糕。我想我不得不跳過這個想法,然後:-(無論如何感謝您的回覆! – Momro 2012-04-04 21:16:37

1

JS運行在沙盒中。這意味着:不能訪問文件系統上的文件。 HTML5文件API是第一個「本機」(如在非閃存或activex中)嘗試授予對用戶文件系統的有限訪問權限。

0

我的想法:

加載文本文件:使用正常的HTML上傳表單(如果你想腳本,也許通過AJAX提交)

保存的文本文件:使用一個文本和在提交,創建文件服務器端,然後提供它下載。 (如前所述,客戶端腳本無權訪問計算機的文件系統)

加載視頻文件:服務器上的視頻是否已經?否則將需要像文本文件一樣上傳。然後用一個flash插件從服務器上播放文件(然後你應該知道這個URI)

所有這些都是使用PHP實現起來相對簡單。在PHP中,來自textarea的換行符保留爲\ n。 教程:Form handling in PHPFile upload in PHP

編輯:自PHP運行服務器端的,你不應該碰到很多的,因爲瀏覽器多樣性的問題。或者,您也可以在Flash或Silverlight中執行所有這些操作,但從我的角度來看,這需要更多的學習,並且對用戶來說不太舒服。

3

有一個骯髒的黑客工具,獲取而不訴諸Flash或Silverlight,或者使用服務器所做的工作,並在大多數瀏覽器的工作原理:

var uriContent = "data:application/octet-stream," + encodeURIComponent(fileContentsAsString); 
window.open(uriContent, 'Save Your File'); 
+0

哇,他們使文件API等...你的聲音更親贊。 – n611x007 2013-12-04 20:14:21