Неожиданный токен - в JSON в позиции 0 Реакция Express Загрузка файла - PullRequest
0 голосов
/ 07 января 2020

Я сталкиваюсь с ошибками при попытке загрузки файлов с помощью 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. Я не уверен, что я делаю правильные вещи, я все еще учусь через реакцию, помощь здесь будет оценена, потому что я застрял в этой точке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...