用Nodejs实现文件服务器(一)

本文介绍了如何使用Node.js创建一个简单的文件服务器,用于存储和发送用户照片。服务器基于Express和fs模块,讨论了id的合法性判断以及未来可能的问题,如id过大和内存浪费。还提及了文件上传中断后的断点续传功能,并给出了部分代码实现。
摘要由CSDN通过智能技术生成

服务器中,用户的个人数据包含用户名、密码甚至好友关系等等,这些数据直接储存在数据库中即可。但有时,用户数据还包括图片、视频甚至文件,此时应该使用一个单独的服务器用于用户文件的存储与发送。当然,对于web,文件服务器亦用于储存网页文件。

这份服务器代码仅实现了一个简单的文件服务器,接收来自API服务器的请求,储存或发送用户的照片。该服务器没有考虑当存在大量请求时的性能问题,本身对于项目来说亦功能不完善。这两个问题将在后续中一一解决。

该文件服务器使用nodejs实现。若不了解甚至没使用过nodejs可以前去http://nodejs.cn/下载,语法与javascript类似。(博主本身也仅初步接触nodejs,内容中如有不对欢迎 指正)

首先应用express模块与fs模块,这是处理url请求与文件读写必不可少的一部分。如果对这两个模块的使用不熟悉请自行查阅官方文档或一些教程。

var express = require('express');
var fs = require('fs');

var app = express();
该文件服务器逻辑如下,对于uri为/upload的post请求返回一个上传的id;对于uri为/upload/:upload_id的put请求接收上传文件并命名存储;对于uri未/upload/:upload_id的get请求认为该id对应的上传操作已完成,返回这个id对应的上传文件的文件名,该id失效;对于uri为/download/:filename的get请求返回对应的文件。

对于id的合法性判断,可以使用id为键创建数组。此处id初始值为0,每生效一个id就讲id值加1。而对于id对应的文件名,以id为键存在另一个数组中。

var upload_ids = [];
var next_id = 0;
var file_names = [];

app.post('/upload', function (req, res) {
    upload_ids[next_id] = true;
    res.set("upload_id", (next_id++).toString(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值