NodeJS移动文件

  1. 都需要使用fs模块 const fs = require('fs')
  2. 可选:使用path模块const path = require('path')指定文件的上传路径
  3. 上传之后都需要删除文件的缓存fs.unlinkSync
  4. 如果使用的是eggjs则可以调用ctx.cleanupRequestFiles()清除文件的缓存
  5. 一下例子以eggjs框架为例
  6. eggjs中的文件上传需要在config.default.js中加入代码,开启egg-multipart
const config = (exports = {multipart: {fileSize: "5mb",mode: 'file',}
})

1. 使用createReadStreamcreateWriteStream的方式

const {ctx} = this
// 获取上传的文件
const getFile = ctx.request.files[0]
// getFile.filepath 文件缓存的地址
// 创建 stream 流
const getReadStream = fs.createReadStream(getFile.filepath)
// path.join(__dirname,`../public/upload/avatar/`, 'test.txt') 指定文件保存的地址和文件名
// 写入文件的 stream 流
const getWriteStream = fs.createWriteStream(path.join(__dirname,`../public/upload/avatar/`, 'test.txt'))
getReadStream.pipe(getWriteStream)
// 清除上传的文件缓存
ctx.cleanupRequestFiles()
// 或者 fs.unlinkSync(getFile.filepath)

2. 使用readFileSyncwriteFileSync的方式

const {ctx} = this
// 获取上传的文件
const getFile = ctx.request.files[0]
// getFile.filepath 文件缓存的地址
// 使用 try catch 捕获 error
try {const readFileData = fs.readFileSync(getFile.filepath)fs.writeFileSync(path.join(__dirname,`../public/upload/avatar/`, 'test.txt'))
} catch(err) {}
// 清除上传的文件缓存
ctx.cleanupRequestFiles()
// 或者 fs.unlinkSync(getFile.filepath)

3. 使用rename出现的问题

Error: EXDEV: cross-device link not permitted, rename,文件移动被禁止,原因可能是因为文件缓存的地址是C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2\\egg-multipart-tmp\\egg_node\\2020\\09\\29\\15\\c6e70360-b82a-4a73-b610-47c83d8f991a.jpgC盘下的,移动不允许到其他盘符

try {fs.renameSync(getFile.filepath, path.join(__dirname, `../public/upload/avatar/`, 'test.txt'))ctx.body = no_data_success('文件上传成功')
} catch (error) {console.log(error, 'error')
}

NodeJS移动文件相关推荐

  1. 用nodejs 替换文件中所有图片的url

    用nodejs 替换文件中所有图片的url 因业务需求,大量文件需要替换url到不同的环境. 所以用nodejs写了这个.本来想用python写,但是大部分同事只有nodejs环境. 主要的命令nod ...

  2. ajax传图片以及后台接收,前端ajax上传文件,图片,后端nodejs接收文件;

    前端ajax上传文件,图片,后端nodejs接收文件: 学习了nodejs,就想实现一下有进度条的文件上传,html 在作这个功能的时候遇到的问题前端 用普通的ajax没法实现文件上传,只能post, ...

  3. 服务器监控文件变化,如何使用nodejs监控文件变化并使用sftp上传到服务器

    如何使用nodejs监控文件变化并使用sftp上传到服务器 发布时间:2021-07-01 12:06:56 来源:亿速云 阅读:99 作者:小新 这篇文章主要为大家展示了"如何使用node ...

  4. node 自动上传文件到服务器,利用nodejs监控文件变化并使用sftp上传到服务器

    最近在用react+express做一个自己的工具型网站(其实就是夺宝岛抢拍器) 然后因为经常要改动,而且又要放到服务器上进行测试.总是要webpack,然后手动把文件上传上去,不胜其烦,索性搜索了下 ...

  5. nodejs 获取文件路径_Qunar 酒店 Nodejs 覆盖率收集实践

    作者介绍 马涛,2013 年加入去哪儿网技术团队,目前在目的地事业部,负责 H5.小程序类应用开发.个人对移动端技术领域和前后端工程化有浓厚兴趣,勇于探索实践追求极致. 概述 一般来讲我们是通过写单元 ...

  6. nodeJs实现文件上传,下载,删除

    转:https://blog.csdn.net/qq_36228442/article/details/81709272 一.简介 本文介绍了nodeJs+express框架下,用multer中间件实 ...

  7. nodejs 当前文件路径_NodeJs的几种文件路径

    上次写删除文件夹的时候用到了fs模块,也集中用到了很多种路径,当时就想写一下,在Node中使用各种路径的问题,于是就简单写了一下,可以从 这里 获取demo源代码. 刚写Node的时候经常会遇到这种情 ...

  8. nodejs 获取文件路径_Nodejs读取文件时相对路径的正确写法(使用fs模块)

    在开发Nodejs中,我们往往最常用的模块就是fs核心模块(fs.readFile)来读取文件.代码如下: 但是运行之后,并没有按照想象中一样,读取test.html文件内容,这是一个bug,坑爹的玩 ...

  9. nodejs写html文件路径,Nodejs读取文件时相对路径的正确写法(使用fs模块)

    搜索热词 在开发Nodejs中,我们往往最常用的模块就是fs核心模块(fs.readFile)来读取文件.代码如下: 但是运行之后,并没有按照想象中一样,读取test.html文件内容,这是一个bug ...

最新文章

  1. 四十七、磁盘调度算法
  2. 正则词典 - 开源项目
  3. 单片机can通信可以接多少个设备_51单片机的多机并行通信系统应用
  4. 用时间换才华:李开复给创业者的7条时间管理建议 【转载】
  5. python多线程处理图片_Python斗图网多线程爬取图片
  6. Amazon Aurora Serverless MySQL已正式可用
  7. LeetCode 794. 有效的井字游戏(分类讨论)
  8. 【LeetCode笔记】226. 翻转二叉树(Java、递归)
  9. 面试精讲之面试考点及大厂真题 - 分布式专栏 22 分布式系统下调用链追踪技术
  10. 火狐浏览器设置url编码_关于不同浏览器对URL编码的分析(转)
  11. 用FPGA实现视频中物体边缘二值化
  12. 利用国内镜像加快pip下载速度和成功率
  13. Oracle内部错误ORA-07445[kpopfr()+339] [SIGFPE]一例
  14. 处理器架构 (十三) ARMv6架构下 各微架构的不同
  15. [优化算法] 拉丁超立方采样与基于优化的均匀采样
  16. 整人代码好玩到没朋友
  17. 通过精读一本英文技术书籍搞定英语
  18. Javascript复习必记知识点
  19. python数据分析经典书籍有哪些_数据分析有哪些好书值得推荐?
  20. 高匿代理,混淆代理,匿名代理,透明代理略解

热门文章

  1. 7 个python GUI库,假期学会立马用起来~
  2. 慧荣SM2320量产工具开卡软件,sm2320固态硬盘用量产工具开卡简略教程
  3. 人工智能Java SDK:kafka-情感倾向分析【英文】
  4. 实习日志 08/14更新
  5. VS2015+QT环境配置后,Lauch Qt Designer打开失败,无法打开*.ui文件
  6. pytorch的register_buffer
  7. 万字长文讲解:什么是「抽象」?
  8. 币图网_教你必须了解的智能合约,共识机制,分布式存储以及密码学
  9. 【微信小程序】实现上拉加载更多
  10. jango中如何使用django-celery完成异步任务 (1)