2017-07-13 83 views
0

我想做一個編譯器,其中用戶在abc.com/newProject上的代碼,他們的輸出是在iframe中,該iframe需要服務文件在abc.com/newProject上製作。所以我將在abc.com/compile-project上做一個JSON obj的POST,它會創建文件,並且這些文件將被iframe使用,在使用之後應該被刪除。文件基本上是JS文件,iframe將使用頭文件中的腳本獲取。NodeJs臨時文件創建,使用tmp或其他東西服務和刪除

所以僞代碼將是這個樣子: -

app.post('/compile-project', function(req, res){ 
    //Directory created using node tmp 
    //files created in the directory 
    //These files are accessible using <script src="/js/file1.js"></script> 
    //when the current connection requests the files they get deleted 

}); 

任何幫助將不勝感激感謝.....

回答

1

我試圖讓編譯器[.. 。]任何幫助將不勝感激謝謝.....

如果你不知道你在做什麼,並強烈建議你不要這樣做(考慮到你問的是如何SAV e文件顯然你沒有)。

您所描述的要求非常簡單,但您需要對所發生的一切有更深入的瞭解,以避免嚴重的安全問題,您在此過程中一定會遇到這種問題。

即使沒有使用文件系統,您所描述的內容也可以完成,因爲您的所有文件只能提供一次,所以將它們存儲在實際文件中沒有多大意義。但即使你堅持使用文件系統,你所需要的只是使用fs.mkdtemp創建一個臨時目錄,使用類似於uuid模塊的文件來爲文件名使用唯一的ID,然後使用fs.writeFile來編寫文件。這就是您需要的文件上傳端點。現在,在下載端點中,您只需要使用fs.readFile來讀取文件,然後使用fs.unlink將其刪除。而已。

現在,它肯定會讓您陷入瀏覽器重新加載失敗,後退按鈕無法工作,以及最終人們的安全問題能夠從服務器提供任何隨機代碼,從而導致漏洞太多,甚至無法在此列出。

拿在GitHub上看看的repl.itJS Bin源代碼:

欣賞,你是願意承擔該項目的範圍。

相關問題