2017-07-11 29 views
0

是否可以將文件添加到網站的目錄中?如何在JavaScript中將文件添加到網站的目錄中?

換句話說,假設我有一個目錄 - 作爲一個例子,我會打電話給"myWeb" - 它有index.htmlmain.js

main.js,我想將添加新的頁面myWeb當我點擊一個按鈕,讓我們說secondindex.html(現在,我不會擔心再次點擊時覆蓋文件)。

這可能嗎?如果不是,還有其他技術,還是這是太廣泛?

+4

僅用於JavaScript,不支持。你需要某種服務器端組件,這通常是用數據庫完成的,而不是實際的單個文件。例如,以StackOverflow爲例,如果您可以使用JS將「.html」文件放在他們的服務器上,那將是不安全的,而且對於每個問題都有一個單獨的'.html'文件是愚蠢的。相反,他們有一組腳本和一個數據庫。 – ceejayoz

+0

爲什麼不,如果不是。您可以簡單地按照此解決方案進行洞察: https://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object-in-javascript –

+0

@tolulopeowolabi這將不要在網絡服務器上創建文件。 – ceejayoz

回答

0

出於安全原因,客戶端無法直接寫入服務器端,因爲它們沒有互相連接。如果將文件寫入服務器是您想要的,那麼您需要一個後端服務器和某種與之交互的API /腳本,並以此方式創建文件。

還有其他一些不涉及創建文件的方式,例如使用像Firebase這樣的數據庫或雲解決方案。但是,您可能希望保持站點基本並編寫靜態文件(速度是其中之一),並且不希望將數據庫設置和維護爲另一個數據庫,這是完全有效的原因。

這可以通過使用fs模塊來完成在Node.js的,例如:

var fs = require('fs'); 

function generateHtml (req) { 
    return '<!DOCTYPE html><html><header><title>My Page</title></header><body><p>A test page</p></body></html>'; 
} 

var filename = '/path/to/secondindex.html'; 
var stream = fs.createWriteStream(filename); 

stream.once('open', function(fd) { 
    var html = generateHtml(); 

    stream.write(html); 

    stream.end(); 
}); 

以上將是一個JavaScript文件服務器端,然後你會有些類型的服務器檢查請求(最好是使用令牌或其他東西來保護)並創建所需的文件。

fs模塊特別靈活,您可以用許多不同的方式創建文件。以上使用流,適用於處理潛在大量文件的情況。

相關問題