经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Node.js » 查看文章
node.js实现上传文件功能
来源:jb51  时间:2019/7/16 8:35:16  对本文有异议

本文实例为大家分享了node.js上传文件的具体代码,供大家参考,具体内容如下

最近刚开始弄nond,写得不好见谅,有什么错误请指出:

首先安装node,安装步骤

这里以上传图片为例:

1、在该文件夹下生成package.json文件:

在本文件夹下打开命令行窗口(window系统,进入该文件夹按住shift然后点击鼠标右键,就可以直接选择在本文件夹中打开命令行窗口)输入:npm init

然后等有提示出来,一路Enter(懂的请无视,不懂且不想懂的一路Enter就是了),然后你就可以发现文件夹下有一个package.json文件,下面是刚生成的package.json文件内容

这里因为要用到multer、express、fs模板,所以要安装模块,fs不需要安装,可以直接引用:

安装multer:npm install multer --save

安装express:npm install express --save

然后你会发现你的文件夹下会多出一个node_modules文件,package.json里会多出这两行:

2、创建app.js文件:

  1. var express=require('express')
  2. var app=express()
  3. var multer=require('multer')
  4. var fs=require('fs')
  5. // var upload=multer({ dest: './tmp/' })
  6.  
  7. var createFolder = function(folder){
  8. try{
  9. fs.accessSync(folder);
  10. }catch(e){
  11. fs.mkdirSync(folder);
  12. }
  13. };
  14.  
  15. var uploadFolder = './upload/';
  16.  
  17. createFolder(uploadFolder);
  18.  
  19. // 通过 filename 属性定制
  20. var storage = multer.diskStorage({
  21. destination: function (req, file, cb) {
  22. cb(null, uploadFolder); // 保存的路径,备注:需要自己创建
  23. },
  24. filename: function (req, file, cb) {
  25. // 将保存文件名设置为 字段名 + 时间戳,比如 logo-1478521468943
  26. let suffix=file.mimetype.split('/')[1];//获取文件格式
  27. cb(null, file.fieldname + '-' + Date.now()+'.'+suffix);
  28. }
  29. });
  30.  
  31. // 通过 storage 选项来对 上传行为 进行定制化
  32. var upload = multer({ storage: storage })
  33.  
  34. app.post('/profile',upload.single('file'),function(req,res,next){
  35. //req.body contains the text fields
  36. console.log(req.file,'------',req.body,'-------',req.file.path);
  37. // res.end(req.file.buffer);
  38. // console.log(req.file.buffer.toString().length);
  39. res.end('ok');
  40. })
  41. app.listen(8081);

然后在命令行窗口继续输入:node app.js

点击回车运行文件

前端的话刚好我这里有篇上传图片的小程序示例,可以测试使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号