学node的一点小笔记(十二) node+express上传文件,自定义路径

2023-11-07

upload.js

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

//用于解析数据
var bodyParser = require( 'body-parser');
//上传文件中间件
var multer = require( 'multer');

app. use( express. static( 'static'));
app. use( bodyParser. urlencoded({ extended: false}));
app. use( multer({ dest: '/tmp/'}). array( 'image'));

app. get( '/upload.html', function( req, res){
res. sendFile( __dirname + '/' + "upload.html")
})

app. post( '/upload', function( req, res){
console. log( req. files[ 0]); //上传的文件信息
//文件名
var des_file = __dirname + "/" + req. files[ 0]. originalname;

fs. readFile( req. files[ 0]. path, function( err, data){
fs. writeFile( des_file, data, function( err){
if( err){
console. log( err)
} else{
response ={
message: 'File uploaded successfully',
filename:req. files[ 0]. originalname
}
//获取临时路径
var tmp_path = req. files[ 0]. originalname;

//指定文件上传之后的存储目录
var target_path = 'D:/my/node/static/images/'+ req. files[ 0]. originalname;

//移动文件到你想上传的目录
fs. rename( tmp_path, target_path, function( err){
if( err){
//抛出异常
console. log( err)
} else{
console. log( '移动成功')
}
})
}
console. log( response);
res. end( JSON. stringify( response))
})
})
})
var server = app. listen( 8082, function( req, res){
var host = server. address(). address;
var port = server. address(). port;
console. log( 'running at http://%s:%s', host, port)
})


upload.html

<html>
<head>
<title>文件上传 </title>
</head>
<body>
<h3>文件上传: </h3>
选择一个文件上传: <br/>
<!-- application/x-www-form-urlencoded  在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值。
text/plain  空格转换为 "+" 加号,但不对特殊字符编码。 -->
<form action= "/upload" method= "post" enctype= "multipart/form-data" >
<input type= "file" name= "image" >
<br />
<input type= "submit" value= "上传" />
</form>
</body>
</html>


教程上只给了上传的功能,自己加上了定义目录的功能,这个是单个图片上传,多个的话需要循环一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学node的一点小笔记(十二) node+express上传文件,自定义路径 的相关文章

随机推荐

  • 开源协议许可证浅析

    如今开源的软件已经越来越被广泛使用 各种专利纠纷也越来越多 工作上要求对开源协议的理解也很迫切 做技术架构是每一个技术人员最渴望的职责 但要做好初级的技术架构工作首先要对各种各样的开源协议有深入了解 知道什么开源软件是工作在什么协议之下 对
  • vue+ElementUI el-select实现下拉选择表格组件(2023-09-04 TSelectTable组件实现虚拟滚动,解决不分页数据量大渲染DOM过多而卡顿问题)

    2023 09 04 TSelectTable组件实现虚拟滚动 解决不分页数据量大渲染DOM过多而卡顿问题 2023 08 21 解决TSelectTable组件表单编辑回显设置defaultSelectVal 无效 一 最终效果 二 代码
  • 智能语音机器人竞品调研

    一 腾讯云 智能客服机器人 链接地址 智能客服机器人 在线智能客服 智能客服解决方案 腾讯云 二 阿里云 智能语音机器人 链接地址 智能对话机器人 阿里云帮助中心 链接地址 智能外呼机器人的业务架构 智能外呼机器人 阿里云帮助中心 三 火山
  • Java——类****是公共的,应在****的文件中声明

    源代码如下所示 public class HelloWord public static void main String args System out println HelloWord 错误如下图所示 解决方法 将第一行的类名 命名为
  • Pybooks:这十本Python编程语言的入门书籍入门必看!

    这个好像没有在微信发过图文版的 补一个 大部分介绍摘自京东等网站 Python基础教程 评语 Python入门佳作 经典教程的全新修订 10个项目引人入胜 Python基础教程 第2版 修订版 是经典的Python入门教程 层次鲜明 结构严
  • 交换机端口镜像及Wireshake抓包

    1 首先配置交换机 先将交换机断开与其他交换机连接的网线 保证电脑端只与这一个交换机通信 2 之前配置过交换机的 如果记得IP 可以直接通过交换机的IP进行登录 3 如果忘记交换机的IP 则可以重置 交换机上有一个reset按键 重置后 我
  • SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@xxx] was not registered for synchro

    目录 1 报错场景 2 问题原因及解决办法 1 报错场景 在搞SpringBoot项目的时候 把Mybatis打印日志的配置打开后 发现每条Sql打印的时候都会在前面打印如下的信息 强迫症受不了 得查查为什么 Creating a new
  • sql server数据库备份单个表的结构和数据生成脚本

    文章摘自 博客园随笔 https www cnblogs com wmqiang p 10437607 html 1 使用场景 sql server数据库备份单个表的结构和数据 在我们要修改正式系统的数据的一天或者多条某些数据时候 要执行u
  • 在yoloV5-6 中使用tensorboard

    使用 在train文件中加入 import torch from torch utils tensorboard import SummaryWriter writer SummaryWriter log dir project train
  • Ionic3开发教程 - 更新(5)

    Ionic3开发系列教程Ionic3开发教程 环境准备 1 Ionic3开发教程 开发 2 Ionic3开发教程 发布Android版本 3 Ionic3开发教程 发布IOS版本 4 Ionic3开发教程 更新 5 App新功能开发完成后
  • 示波器的使用总结

    任何好的示波器系统的关键点在于精确地重建波形的能力 称为信号完整性 不同的系统和不同性能的示波器 有不同的实现最高信号完整性的能力 探头也对测量系统的信号完整性有影响 数字示波器 DSO 基本结构 采样 gt A D转换 gt 信号分离器
  • 使用TypeScript重构Axios:让你的项目更加完善

    引言 如果你使用过或者了解过JavaScript 那么在使用其开发的过程中 势必会了解到Axios 我们都知道 它带来便捷与效率的同时 js本身也会伴随着一些不大不小的问题 当用JavaScript开发大型项目时 因为没有类型检查 所以很多
  • WebSocket的简单入门使用

    WebSocket WebSocket介绍 Java整合WebSocket SpringBoot整合WebSocket WebSocket介绍 1 什么是WebSocket WebSocket 是HTML5一种新的协议 它实现了浏览器与服务
  • C++面试题

    1 中高级C 工程师 2 空类占一个字节 含有虚函数的类占4字节 复制构造函数要传引用 3 为下面代码编写赋值运算符 class CMyString public CMyString char pData nullptr CMyString
  • 家用计算机 阵列,家用电脑如何建立RAID?

    组建RAID系统攻略 RAID全称为 Redundant Array of Inexpensive Disks 中文意思是 独立冗余磁盘阵列 简称磁盘阵列 简单地说 RAID是一种把多块独立的硬盘 物理硬盘 按不同方式组合起来形成一个硬盘组
  • 【Python】保姆级万字讲解:Python中的 pip 和 conda 的理解

    文章目录 一 pip的理解 1 1 安装 1 2 如何使用 1 3 升级 1 4 安装某个版本的包 1 5 卸载或者是更新包 1 6 查看某个包的信息 1 7 查看需要被升级的包 1 8 查看兼容问题 1 9 指定国内源来安装 1 10 下
  • 读懂Word2Vec之Skip-Gram

    本教程将介绍Word2Vec的skip gram神经网络体系结构 我这篇文章的目的是跳过对Word2Vec的一般的介绍和抽象见解 并深入了解其细节 具体来说 我正在深入skipgram神经网络模型 模型介绍 skip gram神经网络模型其
  • eclipse 安装后没有server 没有tomcat

    下载的是eclipse 4 7 M7 但是下载后要配置tomcat时 找不到tomcat 配置过程 1 window gt gt priferences gt gt server gt gt runtime environment gt g
  • JDBC连接数据库_增删改查

    JDBC基础操作 步骤 第一步 下载驱动 第二步 导入驱动 第三步 加载驱动 第四步 驱动管理器运行 获取链接Connection 第五步 通过链接Connection创建数据库操作对象Statement 第六步 通过数据库操作对象Stat
  • 学node的一点小笔记(十二) node+express上传文件,自定义路径

    upload js var express require express var app express var fs require fs 用于解析数据 var bodyParser require body parser 上传文件中间