您的位置:首页 > 理论基础 > 计算机网络

Node.js使用HTTP上传G级的大文件

2014-11-07 00:00 691 查看
不管喜欢与否,javascript无处不在。 我们可以在客户端的前台应用中找到它,也可以在大量的框架、类库中找到它,而且可以在服务器端的后台应用中找到它。

近年来, Javascript越来越流行,这似乎是由于 Javascript 生态系统正在帮助提高生产率、减少入门所需的时间。 在我的第一篇文章中,我介绍了使用 ASP.NET Web 后端 API 实现 G级文件上传,发表完这篇文章后,我决定试一下使用 Node.js 能否达到同样的效果。  这意味着我需要实现 UploadChunk和 MergeAll方法,在 Node.js中我发表的 最后一篇文章谈到了这一点。

开发环境

我们将使用 Visual Studio Express 2013 for Web 作为开发环境, 不过它还不能被用来做 Node.js 开发。为此我们需要安装 Node.js Tools for Visual Studio。  装好后 Visual Studio Express 2013 for Web 就会转变成一个 Node.js IDE 环境,提供创建这个应用所需要的所有东西.。而基于这里提供的指导,我们需要:
下载安装 Node.js  Windows 版,选择适用你系统平台的版本, Node.js (x86) 或者 Node.js (x64)。
下载并安装 Node.js 的 Visual Studio 工具。

安装完成后我们就会运行 Visual Studio Express 2013 for Web, 并使用 Node.js 的交互窗口来验证安装. Node.js 的交互窗口可以再 View->Other Windows->Node.js Interactive Window 下找到. Node.js 交互窗口运行后我们要输入一些命令检查是否一切OK.


Figure 1 Node.js Interactive Window

现在我们已经对安装进行了验证,我们现在就可以准备开始创建支持GB级文件上传的Node.js后台程序了. 开始我们先创建一个新的项目,并选择一个空的 Node.js Web应用程序模板.


Figure 2 New project using the Blank Node.js Web Application template

项目创建好以后,我们应该会看到一个叫做 server.js 的文件,还有解决方案浏览器里面的Node包管理器 (npm).


图3 解决方案管理器里面的 Node.js 应用程序

server.js 文件里面有需要使用Node.js来创建一个基础的hello world应用程序的代码.


Figure 4 The Hello World application

我现在继续把这段代码从 server.js 中删除,然后在Node.js中穿件G级别文件上传的后端代码。下面我需要用npm安装这个项目需要的一些依赖:
 Express – Node.js网页应用框架,用于构建单页面、多页面以及混合网络应用
 Formidable – 用于解析表单数据,特别是文件上传的Node.js模块
 fs-extra – 文件系统交互模块


图5 使用npm安装所需模块

模块安装完成后,我们可以从解决方案资源管理器中看到它们。

图6 解决方案资源管理器显示已安装模块
下一步我们需要在解决方案资源管理器新建一个 ”Scripts” 文件夹并且添加  ”workeruploadchunk.js” 和   “workerprocessfile.js” 到该文件夹。我们还需要下载 jQuery 2.x 和  SparkMD5 库并添加到”Scripts”文件夹。 最后还需要添加 ”Default.html” 页面。这些都在我之前的 post 中介绍过。

创建Node.js后台

首先我们需要用Node.js的”require()”函数来导入在后台上传G级文件的模块。注意我也导入了”path”以及”crypto” 模块。”path”模块提供了生成上传文件块的文件名的方法。”crypto” 模块提供了生成上传文件的MD5校验和的方法。

// The required modules        
var   express = require('express');      
var   formidable = require('formidable');      
var   fs = require('fs-extra');      
var   path = require('path');  
var   crypto = require('crypto');

下一行代码就是见证奇迹的时刻。

[code=html; gutter: true; first-line: 1">var app = express();
这行代码是用来创建express应用的。express应用是一个封装了Node.js底层功能的中间件。如果你还记得那个由Blank Node.js Web应用模板创建的”Hello World” 程序,你会发现我导入了”http”模块,然后调用了”http.CreateServer()”方法创建了 ”Hello World” web应用。我们刚刚创建的express应用内建了所有的功能。

现在我们已经创建了一个express应用,我们让它呈现之前创建的”Default.html”,然后让应用等待连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: