2014-02-28 56 views
3

我正在開發使用英特爾XDK構建apk文件的Android平臺的JavaScript應用程序。我使用人行橫道爲Android打造與檢查API來讀,寫和瀏覽文件系統層次結構,基於W3C文件API選項。我可以輕鬆打開文件,但無法將它們保存到設備中。無法保存在JavaScript混合應用程序中的JavaScript文件(英特爾XDK人行橫道版本)

爲了節省我沒有使用下面的代碼(代碼工作以及在桌面Chrome瀏覽器):

<html> 
<head> 
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
</head> 
<body> 
    <img id="img"/> 

<script> 
    saveImg = function (img, fileName) { 
     var a = document.createElement('a'); 
     a.setAttribute('href', img.src); 
     a.setAttribute("download", fileName); 
     document.body.appendChild(a); 
     a.click(); 
     document.body.removeChild(a); 
    }; 

    $(document).ready(function() { 
     var img = document.getElementById('img'); 
     img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAASUlEQVRo3u3PAQ0AIAwDsIGC+TcLLkhOWgddSU6G a5udT4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi8cQEjUgGTmE6z3QAAAABJRU5ErkJggg=="; 
     img.onload = onload; 
     function onload(){ 
      saveImg(img, 'savedImg'); 
     }; 
    }); 
</script> 
</body> 
</html> 

我的Android設備寫:完成下載文件,並在下載文件夾顯示文件:png;base64,iVBORw0KGgoAAAA...6z3QAAAABJRU5ErkJggg==.bin 。文件大小爲0KB,我也注意到文件的名稱完全是我試圖保存的img的base64 interpritation。

如何解決這個問題,並能夠保存文件?

+1

Cordova有API上傳/下載文件。這是否符合您的需求? https://github.com/apache/cordova-plugin-file-transfer/blob/dev/doc/index.md – rscohn2

+0

@ rscohn2,這個API在加載前有提示,你可以選擇一個路徑,如? – 31415926

回答

2

Crosswalk是一個Web運行時,它不像其他瀏覽器那樣提供下載管理器UI,它不應該是運行時的目標。當用戶點擊下載的鏈接時,Crosswalk會產生Android選定的下載管理器,它將啓動下載管理器或默認瀏覽器來下載資源。

如果Web開發人員想要下載文件並將其保存到設備(本機文件系統),我認爲Cordova下載API現在應該是一個不錯的選擇。 請參閱:https://cordova.apache.org/docs/en/3.0.0/cordova_file_file.md.html#FileTransfer 它是否符合您的要求?

1

並且Crosswalk正在計劃支持本地文件系統,也許它會在Crosswalk 6上着陸,我不確定確切的日期。 支持本地文件系統後,Web開發人員可以使用XmlHttpRequest API下載文件,並通過Crosswalk文件系統API直接將其保存到設備(本機文件系統),而不是通過Cordova下載api。