Index.js
var express = require("express");
var app = express();
var cors = require("cors");
app.use(cors());
require("./admin/front.js")(app);
require("./admin/back.js");
require("./admin/message.js")(app);
require("./admin/upload.js")(app);
require("./upload.js");
require("./admin/course.js")(app);
require("./admin/validate.js");
require("./admin/XML.js")(app);
require("./admin/news.js")(app)
app.listen(10100, () => {
console.log('Back app listening on port 10100!');
});
news.js
module.exports = function (app){
const multer = require("multer");
const fileFilter = (req, file, cb) => {
const allowedTypes = ["image/jpeg", "image/jpg", "image/png"];
if (!allowedTypes.includes(file.mimetype)) {
const error = new Error("Incorrect file");
error.code = "INCORRECT_FILETYPE";
return cb(error, false)
}
cb(null, true);
}
const upload = multer({
dest: './uploads',
fileFilter,
limits: {
fileSize: 5000000
}
});
app.post('/news/upload', upload.single('file'), (req, res) => {
res.json({ file: req.file });
});
app.use((err, req, res, next) => {
if (err.code === "INCORRECT_FILETYPE") {
res.status(422).json({ error: 'Only images are allowed' });
return;
}
if (err.code === "LIMIT_FILE_SIZE") {
res.status(422).json({ error: 'Allow file size is 500KB' });
return;
}
});
}
news.vue
<template>
<div class="file">
<form @submit.prevent="onSubmit" enctype="multipart/form-data">
<div class="fields">
<label>Upload File</label><br />
<input type="file" ref="file" @change="onSelect" />
</div>
<div class="fields">
<button>Submit</button>
</div>
<div class="message">
<h5>{{ message }}</h5>
</div>
</form>
</div>
</template>
<script>
/* eslint-disable */
export default {
name: "FileUpload",
data() {
return {
file: "",
message: ""
};
},
methods: {
onSelect() {
const allowedTypes = ["image/jpeg", "image/jpg", "image/png"];
const file = this.$refs.file.files[0];
this.file = file;
if (!allowedTypes.includes(file.type)) {
this.message = "Filetype is wrong!!";
}
if (file.size > 500000) {
this.message = "Too large, max size allowed is 500kb";
}
},
async onSubmit() {
const formData = new FormData();
formData.append("file", this.file);
try {
await this.$axios.post(this.$back_server+"news/upload", formData);
this.message = "Uploaded!!";
} catch (err) {
console.log(err);
this.message = err.response.data.error;
}
}
}
};
</script>
в индексе все разложено на модули , чтобы слушать один порт, остальные модули в порядке , делал загрузку файла , не понимал, почему не приходит файл, хотя в консоли отображается , методом тыка удалось докопаться до этой проблемы , если убрать все подключения модулей с app, то работает, что предпринять?