一直想尝试使用node搭建个文件服务器,今天简单写了一下,后面会慢慢完善,一起学习哈

首先,我们在做文件上传的时候,很多时候会使用到文件服务器. 从前端来说的话, 我们把数据上传到文件服务器上,然后文件服务器返回给我们一个你所上传文件的一个访问地址

也就是说文件服务器首先要读取到我们前端所上传的数据,接着,需要把文件存放到服务器的指定目录下,最后把存储地址存入数据库并返回给前台

了解了原理之后,做起来思路就比较明确了

准备工作

需要保证拥有node环境

具体的node的安装(windows和linux)见博主的另一篇博客:https://blog.csdn.net/rolinabc/article/details/99623255?spm=1001.2014.3001.5501

创建一个文件夹node(任意名字),再文件夹下创建一个文件 serve.js(服务器文件)和index.html(前端测试文件),还有uploads文件夹(用于存储前端上传的文件夹)

在node文件夹下打开控制台,执行 npm init ,执行完成之后会生成一个package.json文件,即配置文件

server文件的完善

具体代码如下所示, 注释的很详细哦

// 要使用npm install 安装express和formidable

// 要保证和当前文件夹同级,拥有uploads文件夹

var Express = require('express');

var App = Express();

var Path = require('path');

var Formidable = require('formidable');

var FS = require('fs');

App.all('*',function (req, res, next) {

// 解决跨域

res.header('Access-Control-Allow-Origin', '*');

// 设置相应头数据

res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');

// 设置接收的方法

res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');

next();

});

App.post('/upload', function(req, res){

// 创建一个表单对象

var form = new Formidable.IncomingForm();

// 开启该功能,当调用form.parse()方法时,回调函数的files参数将会是一个file数组,数组每一个成员是一个File对象,此功能需要 html5中multiple特性支持。

form.multiples = true;

// 设置当前上传的文件存储到,当前文件的/uploads文件夹下

form.uploadDir = Path.join(__dirname, '/uploads');

var dirUrl

// 监听上传的文件数据

form.on('file', function(field, file) {

var newName = file.name;

// 重命名

FS.rename(file.path, Path.join(form.uploadDir,newName),function(err) {

if(err){

throw err;

}

});

// 得到当前上传文件的存储路径

dirUrl = Path.join(form.uploadDir,newName)

});

// 监听报错

form.on('error', function(err) {

console.log('An error: \n' + err);

});

// 当接受数据完成时,将当前上传的文件的目录返回给前台

form.on('end', function() {

res.send(dirUrl);

});

// 解析请求中携带的数据

form.parse(req);

});

// 启动服务设置端口

var server = App.listen(1000, function(){

console.log('Files Server listening on port 1000');

})

前端的测试代码

我这里是使用了vue,这个无所谓,仅供参考,你自己写原生的也可以测试哈

Document

class="upload-demo"

action="http://localhost:1000/upload"

>

点击上传

new Vue({

el:'#main',

data:{}

})

结合上面的代码,就是搭建一个本地文件服务器了,当然了,我是直接一次性的返回了你所上传的文件的路径,而并没有将其路径存入数据库中

这步比较简单了,毕竟路径都拿到了.

如果不会将数据插入数据库的话,可以见我的另外一篇博客:https://blog.csdn.net/rolinabc/article/details/107003549?spm=1001.2014.3001.5501

(疯狂安利自己的博客,啊哈哈哈)

前端小菜鸟,希望可以批评指正,共同学习,进步哈

本地文件上传服务器node插件,node 搭建本地文件上传服务器相关推荐

  1. node.js http-server 搭建本地服务器

    使用vue-cli创建的项目,能够实现浏览器中自动刷新,实时查看项目效果,其中的原理在于,webpack在本地启动了一个本地服务器,将本机当作一台服务器: 打包后的文件是一个html静态页面,在本地文 ...

  2. typecho本地上传头像_用ProGet搭建本地私有NuGet仓库

    搭建ProGet 下载 官网下载Windows版本的Inedo Hub (https://inedo.com/proget/download) 下载下来的软件名: ProGetInstaller.ex ...

  3. 拉取ftp服务器上的文件_无公网IP环境下搭建外部访问FTP文件共享服务器

    大表哥个人爱好和三五个朋友一起注册了个小公司,主要业务就是做些给用户定制开发些小工具.为了方便自己在公司搭建了个服务器装了个HFS做文件共享.但是公司只拉了普通ADSL,平时也只能在公司内网里访问下H ...

  4. 文件管理系统(2/3)FastDFS搭建分布式文件管理系统

    参考案例:Java+Nginx+FastDFS 分布式文件系统fastdfs_使用python操作fastdfs 一.简介 这里介绍使用python操作fastdfs.python操作需要依赖py3F ...

  5. 云服务器】怎么样可以搭建自己的百度云服务器?

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  6. linux搭建mcpe服务器_Ubuntu Linux下搭建Minecraft我的世界服务器

    总结一下在Ubuntu Linux下搭建Minecraft我的世界服务器的方法,其实非常简单直接. (1).把当前的软件都更新到最新 sudo apt-get update Minecraft服务器需 ...

  7. vue或js解析文件excel表格js通过插件解析表格读取文件

    安装插件 cnpm i xlsx --save-dev cnpm i jquery --save-dev 引入插件 html引入文件 <input type="file" i ...

  8. 摄像头 保存到外网服务器_直播平台搭建千万不要忽略流媒体服务器的存在

    "数据显示,2018年第四季度,陌陌直播服务营收29.592亿元(约4.304亿美元),与2017年同期的21.69亿元相比增长了36%.陌陌方面表示,直播服务营收的增长,主要原因在于直播服 ...

  9. java做flv直播服务器_使用nginx搭建点播和直播流媒体服务器的方法步骤

    环境   centos7 nginx 1 安装nginx依赖包 yum install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel yam ...

最新文章

  1. TaskManager
  2. ConcurrentHashMap源码分析(2)——JDK1.8的实现
  3. c语言什么是合法的变量名,在C语言中,下列合法的变量名包括
  4. is_valid校验机制
  5. 如何使用 rsync 备份 Linux 系统的一些介绍
  6. varchar,nvarchar不同呀。小心出错
  7. ecshop首页调用指定分类的所有产品(指定一级调二级)
  8. logback日志配置
  9. 推荐系统——Wide Deep
  10. Linux命令格式及帮助命令详解
  11. GPL协议、LGPL协议与BSD协议的法律区别
  12. sql优化常用的几种方法
  13. 很多人说单片机很简单。但本专业学生都认为单片机是最难学的课程。为什么学起来都这么吃力呢?
  14. JSP中访问本地图片
  15. 【单片机】温度感应报警装置的设计与制作(说明书)
  16. [LeetCode javaScript] 881. 救生艇
  17. Ubuntu下配置运行yolov3项目的环境(数据集、上github、anaconda、vscode、nvidia驱动、cuda、cuda编译、cudnn)
  18. Python跟孩子一起学编程之一
  19. 2021年中国频谱分析仪行业市场规模、格局及专利情况分析:行业规模不断扩大,国外企业占据主导地位,国产企业发展空间较大[图]
  20. python3中join和格式化的用法 ##16

热门文章

  1. 压抑的胜利--张曼菱
  2. JDBC_学习笔记(婷姐教的)
  3. 京东css3动画全屏海报_京东装修实现全屏CSS3活动海报上下左右抖动动态代码效果,png透明图自动带类似GIF特效 ......
  4. JavaScript特效之图片提示框
  5. 三星SAMSUNG SL-M2676N 驱动
  6. 为什么ERP厂商做的第一个系统都是财务软件?
  7. 成都自动化开发_西门子200smart PLC 不同类型CPU的区别
  8. 运行yum install -y mssql-server命令时报错:
  9. 关于PIC18F25K80串口收发问题
  10. 阅读类App原型制作分享-Another Read