我正在尝试制作一个编译器,用户在abc.com/newProject上创建代码并且他们的输出在iframe中,iframe需要提供在abc.com/newProject上制作的文件。所以我将在abc.com/compile-project上进行JSON obj的POST,它将创建文件,iframe将使用这些文件后,将被删除。文件基本上是JS文件,iframe将使用标头中的脚本来获取。
所以伪代码看起来像这样: -
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
});
任何帮助将不胜感谢.....
答案 0 :(得分:1)
我正在尝试制作编译器[...]任何帮助将不胜感激.....
如果你不知道自己在做什么,我会强烈反对你这样做(并考虑到你问的是如何保存文件然后显然你没有这样做。)
您所描述的要求非常简单,但您需要更深入地了解正在发生的所有事情,以避免在此过程中遇到的严重安全问题。
您所描述的内容即使不使用文件系统也可以完成,因为您的所有文件只提供一次,因此将它们存储在实际文件中没有多大意义。但即使您坚持使用文件系统,您只需使用fs.mkdtemp
创建临时目录,使用类似uuid
模块的内容来获取文件名中使用的唯一ID,然后使用fs。 writeFile写一个文件。这就是文件上载端点所需的全部内容。现在,在下载端点中,您只需使用fs.readFile
来读取文件,然后使用fs.unlink
将其删除。就是这样。
现在,它肯定会让您陷入浏览器重新加载失败,后退按钮无法正常工作的问题,最后安全问题是人们能够从您的服务器提供任何随机代码,从而导致漏洞太多甚至无法在此处列出。< / p>
了解您愿意承担的项目范围。