簡體   English   中英

我嘗試在我的 mocha nodejs 測試中上傳文件,但我得到了 [Object null prototype] { file: {... }}

[英]i try to upload file in my mocha nodejs test but i got [Object null prototype] { file: { ... }}

我發現到處都是白色的解決方案:

app.use(bodyParser.urlencoded({extended: true}));

我可以用

JSON.stringify(req.files)

但我有辦法解決我的問題

我的摩卡測試:

it('a file', async function () {
        const body = { pseudo: 'user', password: 'test@123', mail: 'supermail' };

        const response = await fetch(hostName + '/authentication/register', {
            method: 'post',
            body: JSON.stringify(body),
            headers: { 'Content-Type': 'application/json' }
        })
        const usr = await response.json();
        request.post('/usrAction1/doc')
            .field('token', usr.token)
            .attach('file', 'test/test.pdf')
            .end(function (err, res) {
                if (err) {
                    console.log(err)
                }
                console.log(res.status) // 'success' status
            });
    });

和我的潰敗處理程序:

router.post('/doc', async (req, res) => {
        console.log('req.files');
        console.log(req.files)

 })

還有我的 server.js:

import express from 'express'
import authentication from './src/login.js'
import './global/host.js'
import bodyParser from 'body-parser'
import cors from "cors"
import verifyToken from './middleware/auth.js'
import { userAction1, userAction2 } from './src/userAction.js'
import verifyLevel from './middleware/level.js'
import fileUpload from 'express-fileupload';

export default function myApp() {
    const whitelist = [/http:\/\/localhost:*/, /http:\/\/127.0.0.1:*/]

    const corsConfig = { origin: whitelist }

    const app = express();
    const port = hostPort;

    //json encoded
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json())
    app.use(cors(corsConfig))

    // enable files upload
    app.use(fileUpload({
        createParentPath: true
    }));

    app.use('/usrAction1', userAction1())

    app.listen(port, () => {
        console.log(`Example app listening at http://localhost:${port}`);
    });
    return app;
}
myApp();

但不要為我工作。 我還測試了運行表單的白色外部客戶端服務器,並將其發送到我測試的地址並執行相同的操作 [對象 null 原型]

謝謝 evry litel 的幫助

我在等待一些幫助,我正在使用我在 stackoverflow 上某處找到的這個 magique 代碼:

req.files && Object.keys(req.files)?.map((obj, idx) => { console.log(req.files['file'].data) })

如果有人有更好的主意,我會等待。

感謝所有

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM