Meteor 实现文件下载

(注意:[修改于2014.3.30]由于前天的Meteor进行版本升级到0.8.0版本,导致router包无法正常使用,需到等待包作者的更新。因此这篇博客在router包作者未更新到相应版本前,是无法正常使用的,仅作为参考!

[修改于4.14]该包作者已经推荐 使用iron-router作为router功能。请移步我的另外一篇博客:http://blog.csdn.net/a6383277/article/details/23023269

)

话不多说。

分两种情况。一种使用Linux,一种使用windows。

用Linux开发meteor是简单易用的。windows相对来说比较麻烦。

先上Linux的步骤。

第一 ,你需要安装第三方 meteor包管理器 meteorite。meteorite 官方文档在这里·[https://github.com/oortcloud/meteorite/

安装meteorite非常简单:

使用

$ npm install -g meteorite

即可。可能需要管理权限安装。


安装好后,就可以使用mrt 命令来代替meteor命令了。mrt的具体使用请查询官方文档。不在这里描述了。

在自己的工作目录运行 一下命令:

mrt create  testDownload
cd testDownload
mrt add router

这样就弄好了一个路由功能。


完成之后,删除 testDownload 目录下的 .js  .css  .html 这三个自动生成的文件。

新建一个server文件夹。里面新建一个js 文件,内容如下:

var fs = Npm.require("fs");
Meteor.Router.add( '/report', 'GET', function () {
  return [200,
    {
       'Content-type': 'text/html',
       'Content-Disposition': "attachment; filename=a.html"
    }, fs.readFileSync("/home/ec/a.html")];
} );


这个是读写 /home/ec目录下的a.html文件。所以这个路径可以自己修改,请确保修改后的路径后存在这个文件。

其中

Content-type

Content-Disposition
之类的东西不再解释,这个是http 基础协议的常识,不了解请自行百度或google。


做后既可以了。

然后在testDownload 下u运行

meteor
或者
mrt

都可以 启动meteor


然后在浏览器端输入 localhost::3000/report  即可下载文件。

有管Router的用法,请自行查询官方文档:https://github.com/tmeasday/meteor-router


以上内容 参考了 SO上的答案,原文见:http://stackoverflow.com/questions/17038381/how-to-handle-conditional-file-downloads-in-meteor-js


补上window实现部分。


window的麻烦之处在于 meteorite 不支持windows,但是没有关系。

请下载  http://download.csdn.net/detail/a6383277/6658427 我弄过来的包,这个已经把相关依赖弄好了。


首先 在你i自己的工作目录下 创建meteor工程。步骤和linux差不多:

meteor create testDownload

进入到testDownload目录下。把下载的文件解压。解压得到的一个packages文件夹直接放在testDownload目录下。


打开testDownload 下的 .meteor文件夹。 找到文件packages文件,编辑在最后一行加上router

最后应该类似于这样:

# Meteor packages used by this project, one per line.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.

standard-app-packages
autopublish
insecure
preserve-inputs
router

既可以。然后就是新建server文件夹,创建js文件,复制粘贴代码,运行meteor。和linux下面的目录差不多。最后访问浏览器localhost:3000/report

搞定收工。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我们可以了解到Meteor是一个使用JavaScript编写的全栈框架,而且它支持多语言。因此,我们可以使用Meteor实现双语言根据系统语言显示的功能。 具体实现方法如下: 1.首先,我们需要在Meteor应用程序中添加一个语言包。可以使用meteor add tap:i18n命令来添加tap:i18n包。 2.然后,我们需要在应用程序中定义所需的语言。可以在i18n目录下创建一个JSON文件,例如en.i18n.json和zh.i18n.json,分别用于英文和中文。 3.在JSON文件中,我们需要定义键值对,其中键是用于标识文本的唯一标识符,值是文本的实际内容。例如: en.i18n.json: ``` { "greeting": "Hello", "message": "Welcome to our website" } ``` zh.i18n.json: ``` { "greeting": "你好", "message": "欢迎来到我们的网站" } ``` 4.接下来,我们需要在应用程序中使用这些文本。可以使用i18n.getLanguage()函数获取当前系统语言,并使用i18n.setLanguage()函数设置应用程序的语言。 5.最后,我们可以在应用程序中使用i18n.getTranslation()函数获取所需的文本,并将其显示在页面上。 下面是一个示例代码,用于在Meteor应用程序中实现双语言根据系统语言显示的功能: ```javascript import { Meteor } from 'meteor/meteor'; import { Template } from 'meteor/templating'; import { i18n } from 'meteor/tap:i18n'; import './main.html'; Template.main.helpers({ greeting() { return i18n.getTranslation('greeting'); }, message() { return i18n.getTranslation('message'); } }); Meteor.startup(() => { const language = navigator.language || navigator.userLanguage; if (language.startsWith('zh')) { i18n.setLanguage('zh'); } else { i18n.setLanguage('en'); } }); ``` 在上面的示例代码中,我们首先导入Meteor、Template和i18n模块。然后,我们定义了一个名为main的模板,并在其中使用了greeting和message两个帮助函数。这些帮助函数分别使用i18n.getTranslation()函数获取所需的文本。 在Meteor.startup()函数中,我们使用navigator.language或navigator.userLanguage获取当前系统语言,并使用i18n.setLanguage()函数设置应用程序的语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值