我正在尝试上传一个文件名和一个帖子(9插科打诨风格)到我的mysql数据库,并存储文件到我的项目文件夹。我正在从前端获取文件(前端的console.log工作得很完美),然后我使用nodejs+express后端处理文件并将其发送到我的数据库。我创建了一个multer中间件来设置文件名,扩展名,磁盘位置,然后在一个控制器中我试图得到文件发送它做数据库。console.log“route ok”可以,但是当我使用console.log req.file或req.file.filename或req.body.file等。。。我得到了一个不明确的答案。。。我真的看不出我的代码有什么问题,我已经在另一个项目中使用了它,我工作得很好,但我只做了后端。
下面是我的前端代码(vue js):
<template>
<div id="container">
<div id="formPost">
<button class="btn btn-primary" @click.prevent="displayFormPost = !displayFormPost">Créer un post</button>
<form v-if="displayFormPost">
<input type="text" class="form-control" placeholder="Entrer la description de l'image" v-model="messageToPost">
<input type="file" ref="file"> <button class="btn btn-primary" @click.prevent="postMessage">Poster</button>
</form>
</div>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
displayFormPost: false,
messageToPost: ''
}
},
methods: {
postMessage() {
let file = this.$refs.file.files[0];
let message = this.messageToPost;
console.log(file);
axios.post('http://localhost:3000/wall/post/', { message , file } )
.then(response => {
console.log(response);
})
.catch(error => {
console.log(error);
})
}
}
}
</script>
我的multer-config中间件:
const MIME_TYPES = {
'image/jpg': 'jpg',
'image/jpeg': 'jpg',
'image/png': 'png',
'image/gif': 'gif'
}
const storage = multer.diskStorage({
destination: (req, file, callback) => {
callback(null, 'images')
},
filename: (req, file, callback) => {
const name = file.originalname.split(' ').join('_');
const extension = MIME_TYPES[files.mimetype];
callback(null, name + Date.now() + '.' + extension);
}
})
module.exports = multer({ storage }).single('image');
null
exports.postMessage = (req, res, next) => {
console.log(req.file)
console.log('routeok');
}
我和莫特设定的路线:
const express = require('express');
const router = express.Router();
const multer = require('../middleware/multer-config');
const wallControllers = require('../controllers/wall');
router.post('/post/', multer, wallControllers.postMessage);
module.exports = router;
Ps:控制台中没有任何错误
谢谢!!
我认为有两个问题:
首先,当您设置
multer({ storage }).single('image');
但是您永远不会将任何字段命名为“image",无论是在HTML中,还是在调用
此外,要发送文件,您必须设置正确的
null
const formData = new FormData();
formData.append("image", file);
formData.append("message", message);
axios.post('http://localhost:3000/wall/post/', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
我正在尝试制作一个程序,它可以生成时间表,并将一个数据输出到一个名为
我的目录上有一个文件。我只需要在我的超文本标记语言页面上的按钮为用户下载此文件。 我想出了这个代码,但问题是,当我单击在我的超文本标记语言页面没有发生任何事情,也没有错误。但是文件没有被下载。 我的密码在烧瓶里 注意:我检查了所有关于堆栈溢出的问题。他们中的大多数人在下载之前把文件放在静态文件夹中,或者其他我不理解他们在做什么的人,因为他们没有在HTML部分显示要做什么
问题内容: 我的Eclipse Java软件包被视为一个文件夹。谁能建议出什么问题了? 问题答案: 最坏的情况是,您必须删除文件夹并重新创建为Java程序包。 通过重构将Java类保存在Java项目中的其他位置 删除文件夹和基础文件夹结构 创建一个Java包 通过重构将Java类移回Java包下
我正试图使用ProGuard混淆我的JAR文件。 明确地我有一个Java/Spring web应用程序。所以我制作了一个WAR文件。 我已将所有类从WAR文件的/WEB-INF/classes文件夹复制到一个新的JAR文件中。 我启动了ProGuard GUI,并选择了我的JAR文件作为输入。我指定了一个新的输出。JAR文件。我添加了所有的 /WEB-INF/lib/*. jar文件作为"库罐"。
我有一个码头工人。编写文件,当我启动它时,我希望它创建一个包含一些表的数据库。 我的码头工人组成: 项目结构: 实际的 SQL 文件: -- 主机:本地主机 数据库:待办事项 --服务器版本8.0.18 /*!40101 SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /; /! 40101 SET@OLD_CHARACTER_SET_RES
我从这里下载MySQL ZIP Archive:https://dev.mysql.com/downloads/mysql/(Windows(x86,64位), ZIP Archive) 我从来没有使用zip文件安装。所以我遵循这个教程:https://www.youtube.com/watch?v=kJbwKQqwtoE 从youtube教程中,解压缩zip文件后,会出现 但是当我提取zip文件