Я сталкиваюсь с ошибками при попытке загрузки файлов с помощью act-dropzone-uploader .
Это мой файл Upload.jsx из внешнего интерфейса
import React, {useCallback} from 'react'
import './Upload.css'
import Dropzone from 'react-dropzone-uploader'
const uploadUrl = "http://localhost:5000/api/upload"
const Upload = () => {
//check this out https://react-dropzone-uploader.js.org/docs/quick-start
// specify upload params and url for your files
const getUploadParams = () => {
return { url: uploadUrl }
}
// called every time a file's `status` changes
const handleChangeStatus = ({ meta, file }, status) => {
console.log(status, meta, file)
};
// receives array of files that are done uploading when submit button is clicked
const handleSubmit = (files, allFiles) => {
console.log(files.map(f => f.meta))
allFiles.forEach(f => f.remove())
}
return (
<div className={"card"}>
<div className={"container"}>
<Dropzone
getUploadParams={getUploadParams}
onChangeStatus={handleChangeStatus}
onSubmit={handleSubmit}
accept=".docx, .doc, .docm, .xlsx, .xlsm, .csv"
/>
</div>
</div>
)
}
export default Upload
This мой бэкэнд-код:
сервер. js файл:
const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const helmet = require('helmet');
const db = require('./db')
const upload = require('./routes/upload-router')
const app = express()
const apiPort = process.env.PORT || 5000
var router = express.Router();
const OrgRouter = require('./routes/org-router')
app.use(helmet());
app.use(bodyParser.urlencoded({extended: true, limit: "100mb"}))
app.use(cors())
app.use(bodyParser.json({type: '*/*', limit: "100mb"}))
db.on('error', console.error.bind(console, 'MongoDB connection error:'))
app.use('/api', OrgRouter, upload)
app.listen(apiPort, () => console.log(`Server running on port ${apiPort}`))
файл загрузочного маршрутизатора:
const upload = require('../upload')
const express = require('express')
const router = express.Router()
router.post('/upload', upload)
module.exports = router
Загрузка. js файл:
const IncomingForm = require('formidable').IncomingForm
module.exports = function upload(req, res) {
var form = new IncomingForm();
console.log("PROCESSING FILE UPLOAD")
console.log(req.body);
form.parse(req);
form.on('fileBegin', function (name, file) {
file.path = __dirname + '/uploads/' + file.name;
});
form.on('file', function (name, file) {
console.log('Uploaded File ' + file.name);
});
form.on('end', () => {
res.json()
})
console.log("FILE PATH: ", file.path);
}
Я получаю
SyntaxError: Неожиданный токен - в JSON в позиции 0 в JSON .parse ()
и
POST http://localhost: 5000 / api / upload 400 (неверный запрос)
при попытке загрузить файл в папку и сохранить данные файла в mongodb. Я не уверен, что я делаю правильные вещи, я все еще учусь через реакцию, помощь здесь будет оценена, потому что я застрял в этой точке.