美文网首页
NodeJS文件上传

NodeJS文件上传

作者: icaojinyu | 来源:发表于2019-10-10 08:31 被阅读0次

使用multer上传文件,默认不会给文件添加扩展名

一、package.json

{
  "name": "file_upload",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "axios": "^0.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "multer": "^1.4.2",
    "randomstring": "^1.1.5",
    "vue": "^2.6.10"
  }
}

二、app.js

var express = require('express')
var multer = require('multer')
var randomstring = require('randomstring')
var path = require('path')
var app = express()

app.use(require('cors')())
app.use(express.json())

// 指定上传文件的存储目录及文件名
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './uploads')
  },
  filename: function (req, file, cb) {
    var ext = path.extname(file.originalname)
    cb(null, randomstring.generate(44) + ext)
  }
})

var upload = multer({storage: storage})

app.post('/upload', upload.single('file'), (req, res) => {
  var file = req.file
  console.log(file)
  if (file) {
    file.url = `http://localhost:3000/${file.filename}`
    res.send(file)
  } else {
    res.send({
      msg: '老铁,别皮了,请上传文件吧'
    })
  }
})

// 静态资源访问
app.use(express.static('uploads'))
app.use(express.static('public'))

app.listen(3000, () => {
  console.log('http://localhost:3000')
})

三、upload_test.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="node_modules/axios/dist/axios.min.js"></script>
  <script src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
  <form @submit.prevent="upload" action="">
    <p>
      <input @change="fn" ref="file" type="file">
    </p>
    <p>
      <input type="submit">
    </p>
  </form>
</div>
<script>
  var http = axios.create({
    baseURL: 'http://localhost:3000'
  })

  Vue.config.productionTip = false
  Vue.prototype.$http = http


  new Vue({
    el: '#app',
    methods: {
      fn(){
        console.log(this.$refs.file.files)
      },
      upload() {
        var formData = new FormData()
        formData.append('file', this.$refs.file.files[0])
        this.$http.post('/upload', formData, {
          headers: {
            'content-type': 'multipart/form-data'
          }
        }).then((res) => {
          console.log(res.data)
        }).catch((err) => {
          console.log(err)
        })
      }
    }
  })
</script>
</body>
</html>

相关文章

  • 前端干货链接-持续更新

    前端文件上传 拖拽上传、图片预览、文件上传nodejs-process-excel :nodejs解析或导出exc...

  • 求解一个nodeJs 的文件访问问题

    开发环境 后端:nodeJs 前端:Vue 需求:视频文件上传,视频预览 问题:上传已经可以实现,存在nodeJs...

  • Nodejs 文件上传

    node js 接收表单数据原理 使用 formidable 上传文件

  • NodeJS文件上传

    使用multer上传文件,默认不会给文件添加扩展名 一、package.json 二、app.js 三、uploa...

  • nodejs 文件上传

    图片文件上传、在调试的时候 使用 multer 一直报错,所以最后选择使用 connect-multiparty ...

  • NodeJS 文件上传

    keywords multipart/form-data HTML entity 各依赖功能描述 formidab...

  • ftp 上传模式

    在使用 nodejs 实现 ftp 文件上传的过程中,我发现文本文件可以正常上传,但是图片文件则不行。图片被上传后...

  • node安装(linux)

    1、下载 https://nodejs.org/zh-cn/download/ 2、上传 rz上传文件 3、解压 ...

  • nodejs 实现文件上传

    文件上传需要解析文件,之前我们解析数据使用body-parser,解析文件可以用multer。body-parse...

  • nodejs 实现文件上传

    前端页面结构 node 服务端 需用到connect-multiparty 模块 npm install conn...

网友评论

      本文标题:NodeJS文件上传

      本文链接:https://www.haomeiwen.com/subject/lbxopctx.html