Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从heroku中删除静态文件或目录?_Javascript_Node.js_Git_Bash_Heroku - Fatal编程技术网

Javascript 如何从heroku中删除静态文件或目录?

Javascript 如何从heroku中删除静态文件或目录?,javascript,node.js,git,bash,heroku,Javascript,Node.js,Git,Bash,Heroku,我在我的公共目录中动态创建了一个包含图像的文件夹,看起来像这样public/indiv/compa/ferfw432ervr12/test.png。我想删除indiv目录。我试着做heroku run bash。并使用rm删除目录。之后我做了ls,我找不到文件,所以我觉得一切都很好,但当我转到url时,我仍然可以看到图像,所以我做了heroku运行bash,文件仍然在那里。我要他们走 我也做了这样的事情: var deleteFolderRecursive = function(path) {

我在我的公共目录中动态创建了一个包含图像的文件夹,看起来像这样
public/indiv/compa/ferfw432ervr12/test.png
。我想删除
indiv
目录。我试着做heroku run bash。并使用
rm
删除目录。之后我做了
ls
,我找不到文件,所以我觉得一切都很好,但当我转到url时,我仍然可以看到图像,所以我做了
heroku运行bash
,文件仍然在那里。我要他们走

我也做了这样的事情:

var deleteFolderRecursive = function(path) {
  if( fs.existsSync(path) ) {
    fs.readdirSync(path).forEach(function(file,index){
      var curPath = path + "/" + file;
      if(fs.lstatSync(curPath).isDirectory()) { // recurse
        deleteFolderRecursive(curPath);
      } else { // delete file
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(path);
  }
};

看起来它从本地删除了文件,但没有从heroku删除,即使在我推了heroku master之后

您推送到Heroku的任何文件都存在于您运行的任何dyno的文件系统中。 听起来像是有一个web dyno,它可以动态地创建一个包含各种图像文件的目录。对于Heroku来说,这可能不是一个好主意,除非您真的只需要那些动态生成的文件仅对创建它们的dyno实例可用,并且仅在该dyno实例运行期间可用。 您不太可能有一个用例真正证明这样做是合理的,但假设您这样做了。进入并执行“heroku run bash”只需创建一个新的“一次性”dyno实例,它有自己的临时文件系统,与Web dyno的临时文件系统完全分离。
因此,删除一次性dyno中的文件或目录绝对不会影响web dyno的行为。

您不太可能有一个用例真正证明这样做是正确的
我将告诉您为什么这样做。也许你可以告诉我这样做是否“合理”,或者我会给你更多的信息。我使用facebook上的feed对话框按钮查看网站。在用户输入评论并单击fb共享按钮后,
fb.api
被触发,我告诉用户在这里找到一张刚刚在共享按钮上组合起来的图片。我告诉FBAPI转到刚刚创建的个人图片。我认为这会很好,因为将照片保存在公用文件夹中是标准的。我想你是说我不应该把图像放在heroku上。我想你说如果我有多个dynos,会引起问题。我应该用类似的东西来代替吗。我必须确保在调用FBAPI之前将图像加载到cloudinary。顺便说一句,我通过使用“fs path”NPMJ删除了这些文件,正如您正确提到的,如果您有多个dyno,使用临时文件系统将不起作用,并且即使使用一个dyno,对于您的用例也不可靠,因为您的一个dyno可以在任何时候无警告地循环使用,并且您存储的文件已丢失。您应该为您的图像使用一些外部备份服务。我不熟悉cloudinary.com,但这可能是一个合适的选择。查看Heroku元素以了解其他可能性。祝你好运