首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用猫鼬、快车、角4和NodeJS上传、保存和显示图片

如何用猫鼬、快车、角4和NodeJS上传、保存和显示图片
EN

Stack Overflow用户
提问于 2017-10-08 13:59:55
回答 1查看 7.2K关注 0票数 2

我正在使用猫鼬,速成,角4和NodeJS创建一个应用程序,我是相当新的语言。在我的一个组件中,我有一个CRUD,我想上传一张图片。将其保存到Mongoose/MongoDB后,我想在屏幕上显示图片。

我应该使用插件吗?如果是,是哪一个?你能举个例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-08 15:04:05

如果您想上传文件到服务器,您可以使用multer模块的nodejs,这是可用的npm。

这个网站将对你很有帮助。- https://www.terlici.com/2015/05/16/uploading-files-locally.html

而且,如果你想用穆特和猫鼬,这个例子也是有帮助的。

Image.js

代码语言:javascript
复制
import mongoose from 'mongoose'
const Schema = mongoose.Schema

const Image = new Schema({
  filename: {
    type: String,
    required: true
  },
  originalname: {
    type: String,
    required: true
  }
}, {timestamps: true})

module.exports = mongoose.model('Image', Image)

server.js

代码语言:javascript
复制
// ...
const app = express()
const Image = require('./Image.js')
const multer = require('multer')
const path = require('path')
const UPLOAD_PATH = path.resolve(__dirname, 'path/to/uploadedFiles')
const upload = multer({
  dest: UPLOAD_PATH,
  limits: {fileSize: 1000000, files: 5}
})

// upload image
app.post('/api/image', upload.array('image', 5), (req, res, next) => {
  const images = req.files.map((file) => {
    return {
      filename: file.filename,
      originalname: file.originalname
    }
  })
  Image.insertMany(images, (err, result) => {
    if (err) return res.sendStatus(404)
    res.json(result)
  })
})

// get image with id
app.get('/:id', (req, res, next) => {
  Image.findOne({_id: req.params.id}, (err, image) => {
    if (err) return res.sendStatus(404)
    fs.createReadStream(path.resolve(UPLOAD_PATH, image.filename)).pipe(res)
  })
})

// ...

client.js

代码语言:javascript
复制
// ...
const axios = require('axios')

function uploadImage () {
  const files = document.getElementById('INPUT_TAG').files
  const formData = new FormData()
  formData.append('image', files[0])
  axios.post('YOUR_URL/api/image', formData)
}
// ...

upload.html

代码语言:javascript
复制
<body>
  <input type="file" id="INPUT_TAG"/>
  <button>call uploadImage() with angular/vue/react/etc</button>
</body>

image.html

代码语言:javascript
复制
<body>
  <img src="YOUR_URL/api/image/IMAGE_ID">
</body>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46631906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档