本地文件上传服务器node插件,node 搭建本地文件上传服务器
一直想尝试使用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 搭建本地文件上传服务器相关推荐
- node.js http-server 搭建本地服务器
使用vue-cli创建的项目,能够实现浏览器中自动刷新,实时查看项目效果,其中的原理在于,webpack在本地启动了一个本地服务器,将本机当作一台服务器: 打包后的文件是一个html静态页面,在本地文 ...
- typecho本地上传头像_用ProGet搭建本地私有NuGet仓库
搭建ProGet 下载 官网下载Windows版本的Inedo Hub (https://inedo.com/proget/download) 下载下来的软件名: ProGetInstaller.ex ...
- 拉取ftp服务器上的文件_无公网IP环境下搭建外部访问FTP文件共享服务器
大表哥个人爱好和三五个朋友一起注册了个小公司,主要业务就是做些给用户定制开发些小工具.为了方便自己在公司搭建了个服务器装了个HFS做文件共享.但是公司只拉了普通ADSL,平时也只能在公司内网里访问下H ...
- 文件管理系统(2/3)FastDFS搭建分布式文件管理系统
参考案例:Java+Nginx+FastDFS 分布式文件系统fastdfs_使用python操作fastdfs 一.简介 这里介绍使用python操作fastdfs.python操作需要依赖py3F ...
- 云服务器】怎么样可以搭建自己的百度云服务器?
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...
- linux搭建mcpe服务器_Ubuntu Linux下搭建Minecraft我的世界服务器
总结一下在Ubuntu Linux下搭建Minecraft我的世界服务器的方法,其实非常简单直接. (1).把当前的软件都更新到最新 sudo apt-get update Minecraft服务器需 ...
- vue或js解析文件excel表格js通过插件解析表格读取文件
安装插件 cnpm i xlsx --save-dev cnpm i jquery --save-dev 引入插件 html引入文件 <input type="file" i ...
- 摄像头 保存到外网服务器_直播平台搭建千万不要忽略流媒体服务器的存在
"数据显示,2018年第四季度,陌陌直播服务营收29.592亿元(约4.304亿美元),与2017年同期的21.69亿元相比增长了36%.陌陌方面表示,直播服务营收的增长,主要原因在于直播服 ...
- java做flv直播服务器_使用nginx搭建点播和直播流媒体服务器的方法步骤
环境 centos7 nginx 1 安装nginx依赖包 yum install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel yam ...
最新文章
- TaskManager
- ConcurrentHashMap源码分析(2)——JDK1.8的实现
- c语言什么是合法的变量名,在C语言中,下列合法的变量名包括
- is_valid校验机制
- 如何使用 rsync 备份 Linux 系统的一些介绍
- varchar,nvarchar不同呀。小心出错
- ecshop首页调用指定分类的所有产品(指定一级调二级)
- logback日志配置
- 推荐系统——Wide Deep
- Linux命令格式及帮助命令详解
- GPL协议、LGPL协议与BSD协议的法律区别
- sql优化常用的几种方法
- 很多人说单片机很简单。但本专业学生都认为单片机是最难学的课程。为什么学起来都这么吃力呢?
- JSP中访问本地图片
- 【单片机】温度感应报警装置的设计与制作(说明书)
- [LeetCode javaScript] 881. 救生艇
- Ubuntu下配置运行yolov3项目的环境(数据集、上github、anaconda、vscode、nvidia驱动、cuda、cuda编译、cudnn)
- Python跟孩子一起学编程之一
- 2021年中国频谱分析仪行业市场规模、格局及专利情况分析:行业规模不断扩大,国外企业占据主导地位,国产企业发展空间较大[图]
- python3中join和格式化的用法 ##16
热门文章
- 压抑的胜利--张曼菱
- JDBC_学习笔记(婷姐教的)
- 京东css3动画全屏海报_京东装修实现全屏CSS3活动海报上下左右抖动动态代码效果,png透明图自动带类似GIF特效 ......
- JavaScript特效之图片提示框
- 三星SAMSUNG SL-M2676N 驱动
- 为什么ERP厂商做的第一个系统都是财务软件?
- 成都自动化开发_西门子200smart PLC 不同类型CPU的区别
- 运行yum install -y mssql-server命令时报错:
- 关于PIC18F25K80串口收发问题
- 阅读类App原型制作分享-Another Read