从Meteor应用程序

时间:2015-07-22 06:48:37

标签: node.js http meteor iron-router

我想将图像从客户端上传到服务器。客户必须看到他或她拥有的所有图像的列表,并查看图像本身(缩略图或类似的东西)。

我看到人们使用两种方法(一般来说)

1-上传图像并将二进制文件保存到MongoDB

2-上传图像并将其移动到文件夹,将路径保存到某处(经典方法,到目前为止我实现的方法)

每种方法的优缺点是什么?如何检索数据并在每种情况下将其显示在模板中(获取路径并写入src属性和img标记并发送二进制文件)?

到目前为止发现的问题:当我上传请求foo.jpg(localhost:3000 / uploads / foo.jpg)并将服务器移动到已知文件夹时,我的路由器(铁路由器)无法找到如何处理请求。

1 个答案:

答案 0 :(得分:0)

  

1-上传图像并将二进制文件保存到MongoDB

要么将文件大小限制为16MB并且只使用基本的mongoDB,要么使用gridFS并且可以存储任何内容(没有大小限制)。有几个使用这种方法的赞成,但恕我直言,它比存储在文件系统上要好得多:

  • 文件不会触及您的文件系统,而是通过管道传输到您的数据库
  • 您可以获得mongo的所有好处,并且可以毫无后顾之忧地扩展
  • 文件已分块,您只能发送特定的字节范围(对于流式传输或下载恢复非常有用)
  • 文件的访问方式与任何其他mongo文档一样,因此您可以使用allow / deny函数,pub / sub等。
  

2-上传图像并将其移动到文件夹,将路径保存到某处   (经典方法,到目前为止我实施的方法)

在这种情况下,要么将所有内容存储在公用文件夹中,并使用文件名+路径公开访问所有内容,要么使用专用资产交付系统,例如ngix服务器。无论哪种方式,您将使用比第一个选项更不安全和可维护的东西。

话虽如此,请查看the file collection package。它比collection-fs简单得多,它将为您提供开箱即用的所有内容(包括文件api,gridFS存储,可恢复上传和许多其他内容)。

  

到目前为止发现的问题:当我请求foo.jpg时   (localhost:3000 / uploads / foo.jpg)我上传并且服务器移动了   到一个已知的文件夹,我的路由器(铁路由器)无法找到如何处理   请求。

您知道此路径指向您的根文件夹<script> $(document).ready(function() { var mult = 0; var tot_val = $("#total_item_count").val(); $('.cad_cons').keyup(function() { $('.cad_cons').each(function() { var cad_calc = $(".cad_cons").val(); if(!isNaN(this.value) && this.value.length!=0) { mult += parseFloat(tot_val) * parseFloat(cad_calc); } $(".total_cad_cons").val(mult); }); }); }); </script> 目录吗?如果你把它放在那里,你应该可以请求它。