2017-07-25 32 views
0

我在公用文件夹内创建了uplods文件夹。公用文件夹流星停止手表

此文件夹包含我系统上传的所有图片。

尽快上传一个文件,它会自动刷新浏览器。

我已经保持上传〜和〜上传,但一旦文件上传,那么它将重新加载。

,我想通过本地主机访问它:3000这样this解决方案将无法正常工作对我来说

回答

0

流星永远保持观望为发展模式文件更改。您可以在生产模式下运行,但每次更改代码时都需要刷新...

您不想公开存储您上传的内容。

这里是我的关于流星论坛这个题目的答案: https://forums.meteor.com/t/why-shouldnt-i-upload-files-in-the-public-directory/36899/3

使用的东西比你的流星应用 其他管理/存储/为你的用户文件有很多很多好处。

如果您的应用程序崩溃,文件服务器仍然可用(当前上传 将继续)。如果您的文件服务器崩溃,应用程序仍然可以运行并使用 。流星不善于提供文件,因此服务 用户的文件将影响您的应用程序性能,并且文件 服务本身。将文件存储在Meteor的公用文件夹中使其可以让整个世界都可以使用 ,但您可能不希望这样。文件处理 和服务器应用程序不需要相同的服务器规格, ,因此您希望稍后将它们分开。编辑:

我意识到,虽然提供更好的见解你的其他选项我 没有回答你的问题。

为什么你不应该公开存储用户的文件?正如有人指出的那样, 公开的任何文件将可用于世界。公用文件夹 与您的应用捆绑在一起,它被认为是您的源代码的一部分。 这意味着存储资源以供您的应用程序使用,例如您的 徽标,自定义图标和字体等......就像您的数据库一样, 用户的文件是动态数据,应与您的代码分开, 他们不需要你的应用程序运行。他们习惯了 由您的应用程序收集的商店信息,非常多的在 对中,但他们的内容通常不会跟随您的应用程序在 之间的不同环境,如开发,分段和生产。 当您在某些更改后重新整理应用程序时,您的图像和字体文件将包含新的 公用文件夹内容,但不是用户在工作时上传的所有 文件,因此您将有 以确保你并没有删除这些文件。即使所有人都可以看到您上传的文件,您肯定会使用一个 数据库来跟踪上传的文件,它们的上传日期, 所有者,尺寸,标签等等。这意味着,即使你将这些文件保存在dev/staging/production文件中,你也需要完整的 数据库......在推送到产品时合并数据库更改 比仅仅检入文件夹更难。

一个简单的解决方案就是像使用Meteor一样使用Meteor,但将文件存储在源代码之外的某处。并使用NGINX来提供这些文件。下面是我使用的办只是......它代理的URL正确的请求,流星和开始“形象”所有的人从/img/

server_tokens off; # for security-by-obscurity: stop displaying nginx version 

# this section is needed to proxy web-socket connections 
map $http_upgrade $connection_upgrade { 
    default upgrade; 
    ''  close; 
} 

# HTTP 

server { 
    listen 80 default_server; # if this is not a default server, remove "default_server" 
    #listen [::]:80 default_server ipv6only=on; 

    root /usr/share/nginx/html; # root is irrelevant 
    index index.html index.htm; # this is also irrelevant 

    server_name meteor.localhost; # the domain on which we want to host the application. Since we set "default_server" previously, nginx will answer all hosts anyway. 
     access_log /etc/nginx/logs/app.access; 
     error_log /etc/nginx/logs/app.error error; 

    location/{ 
     proxy_pass http://localhost:3000; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection $connection_upgrade; 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $remote_addr; # preserve client IP 

     if ($uri != '/') { 
      expires 30d; 
     } 
    } 
     location /image/{ 
       alias /img/; 
       expires -1; 
     } 
} 

注意直接送达的NGINX配置,这意味着您将通过端口80而不是3000访问您的应用程序,因为NGINX将负责代理服务。

+0

如何访问IMG文件夹下的我的档案工作的罚款? 它将由localhost:3000/img?在示例配置中, – Nitin

+0

,localhost/image直接指向您的/ img文件夹。您可以在配置示例的底部将其更改为任何您想要的内容。 – Salketer

+0

感谢您的支持,但我得到了流星本身的解决方案,因此无需使用ngix – Nitin

0

这对我的作品

我已经把下面的代码在客户端启动

Meteor._reload.onMigrate(function() { 
return [false]; 
}); 

感谢它为需要