NodeJ使用tmp或其他方式创建,提供和删除临时文件

时间:2017-07-13 12:54:17

标签: javascript node.js temporary-files

我正在尝试制作一个编译器,用户在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

});

任何帮助将不胜感谢.....

1 个答案:

答案 0 :(得分:1)

  

我正在尝试制作编译器[...]任何帮助将不胜感激.....

如果你不知道自己在做什么,我会强烈反对你这样做(并考虑到你问的是如何保存文件然后显然你没有这样做。)

您所描述的要求非常简单,但您需要更深入地了解正在发生的所有事情,以避免在此过程中遇到的严重安全问题。

您所描述的内容即使不使用文件系统也可以完成,因为您的所有文件只提供一次,因此将它们存储在实际文件中没有多大意义。但即使您坚持使用文件系统,您只需使用fs.mkdtemp创建临时目录,使用类似uuid模块的内容来获取文件名中使用的唯一ID,然后使用fs。 writeFile写一个文件。这就是文件上载端点所需的全部内容。现在,在下载端点中,您只需使用fs.readFile来读取文件,然后使用fs.unlink将其删除。就是这样。

现在,它肯定会让您陷入浏览器重新加载失败,后退按钮无法正常工作的问题,最后安全问题是人们能够从您的服务器提供任何随机代码,从而导致漏洞太多甚至无法在此处列出。< / p>

在GitHub上查看repl.itJS Bin的源代码:

了解您愿意承担的项目范围。