在Multer中保存多个文件的问题

发布于 2025-01-23 23:06:33 字数 3070 浏览 0 评论 0原文

我正在选择多个文件,并将Multer保存文件用于特定文件夹。但是,如果我上传单个文件,则可以正常工作,但是如果选择了两个以上,则会给我一个 错误[err_http_headers_sent]:将标题发送到客户端后无法设置标头。我很沮丧地解决它。任何人都可以帮助我。


<div className="mb-3" >
                <CFormLabel htmlFor="formFileMultiple">Select Resources</CFormLabel>
                                                    <CFormInput
                                                        multiple
                                                        onChange={(event) => formikProps.setFieldValue('fileName', event.target.files)}
                                                        accept="application/pdf, application/zip"
                                                        type="file" id="formFileMultiple" />
                                                    <p style={{ color: 'red' }}>{formikProps.touched.fileName && formikProps.errors.fileName}</p>
                                                </div>


  

    const handleAddResources = async ({ fileName }) => {
    
            try {
                const data = new FormData();
                // data.append("fileName", fileName);
                data.append("courseId", props.currentUser.item.course_id);
    
                for (let i = 0; i < fileName.length; i++) {
    
                    // newArr.push(fileName[i]);
                    data.append("fileName", fileName[i]);
                    let response = await axios.post(`${ConfigData.SERVER_URL}/admin/resources/addResources`, data, {
    
                    })
                    if (response.data.status == false) {
                        throw Error(response.data.message)
                    }
                    else {
                        console.log("Success")
                        setthrowAlert(true);
                    }
                }
            } catch (error) { console.log(error) }
        }


router.post('/addResources', fileUpload.array('fileName', 100), async (req, res) => {

    try {
        if (req.body && req.files) {
            req.files.map(async(item) => {
                console.log("ITEM--->", item);
                let ResourcePost = new ResourcesPost({
                    originalname: item.originalname,
                    FileName:item.filename,
                    courseId: req.body.courseId,
                    mimetype:item.mimetype,
                    encoding:item.encoding,
                    size:item.size,
                    destination:item.destination
                })
                let uploadData = await ResourcePost.save()
                if (uploadData) {
                    res.status(200).json({ status: true, data: uploadData })
                } else {
                    res.status(500).json({ status: false, message: err.message })
                }
            })


        } else {
            console.log("Resourses Not Found !");
        }
    }
    catch (error) {
        console.log(error);
    }

})

I am Selecting Multiple Files and using Multer saving Files to a specific folder. But if i am uploading Single file it is working Fine but if Selected More than two it is giving me an
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client. I am frustrated solving it. Can anyone one help me out yrr.


<div className="mb-3" >
                <CFormLabel htmlFor="formFileMultiple">Select Resources</CFormLabel>
                                                    <CFormInput
                                                        multiple
                                                        onChange={(event) => formikProps.setFieldValue('fileName', event.target.files)}
                                                        accept="application/pdf, application/zip"
                                                        type="file" id="formFileMultiple" />
                                                    <p style={{ color: 'red' }}>{formikProps.touched.fileName && formikProps.errors.fileName}</p>
                                                </div>


  

    const handleAddResources = async ({ fileName }) => {
    
            try {
                const data = new FormData();
                // data.append("fileName", fileName);
                data.append("courseId", props.currentUser.item.course_id);
    
                for (let i = 0; i < fileName.length; i++) {
    
                    // newArr.push(fileName[i]);
                    data.append("fileName", fileName[i]);
                    let response = await axios.post(`${ConfigData.SERVER_URL}/admin/resources/addResources`, data, {
    
                    })
                    if (response.data.status == false) {
                        throw Error(response.data.message)
                    }
                    else {
                        console.log("Success")
                        setthrowAlert(true);
                    }
                }
            } catch (error) { console.log(error) }
        }


router.post('/addResources', fileUpload.array('fileName', 100), async (req, res) => {

    try {
        if (req.body && req.files) {
            req.files.map(async(item) => {
                console.log("ITEM--->", item);
                let ResourcePost = new ResourcesPost({
                    originalname: item.originalname,
                    FileName:item.filename,
                    courseId: req.body.courseId,
                    mimetype:item.mimetype,
                    encoding:item.encoding,
                    size:item.size,
                    destination:item.destination
                })
                let uploadData = await ResourcePost.save()
                if (uploadData) {
                    res.status(200).json({ status: true, data: uploadData })
                } else {
                    res.status(500).json({ status: false, message: err.message })
                }
            })


        } else {
            console.log("Resourses Not Found !");
        }
    }
    catch (error) {
        console.log(error);
    }

})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文