流浪的菜袅 2023-03-06 16:21 采纳率: 79.5%
浏览 33
已结题

带有图片数据的表单提交,post参数的读取问题

大锅们好,我是蔡袅,有些问题不懂想问大锅们,求解答
1.是这样的,前端我用form表单做了个提交,里面含图片数据,axios发请求,图片的file值就放在要提交的数据formData中:

const data = await postSwiper({url:'alldata',data:this.formData})

请求头默认是:application/json
nodejs中能正常读取到传过来的数据,但是图片没有正常存储到文件夹中,multer包有用到的,也设置好了存储后的地址已经文件名,这一块的代码没有问题
2.前面的方式虽然能读取到post请求传来的参数,但是不能存储图片,我就换了个方式,在点击发请求的事件内,将要传递的数据放到了formdata里

submitForm(formName) {
        this.$refs[formName].validate(async(valid) => {
            if (valid) {
                if(!this.formData.src) {
                    this.$message.error('请选择图片上传')
                    return
                }
                const formdata = new FormData()
                formdata.append('avatar',this.formData)
                const data = await postSwiper({url:'alldata',data:formdata})
            } else {
            console.log('error submit!!');
            return false;
            }
        });
    },

nodejs中:

router.post('/',upload.array('avatar',3),(req,res) => {
    // console.log('req.body',req.body);
    console.log('req.file',req.file);
    console.log('req.files',req.files);
    console.log('req.body',req.body.goodsname);
})

这个时候,请求头默认是multipart/form-data,nodejs中接收到的参数显示为Object,但是指向具体属性时,值又是undefined,而且图片也没有存储到

req.file undefined
req.files []
req.body undefined
[0mPOST /api/alldata [0m-[0m - ms - -[0m

3.然后我就把表单中的数据和图片数据file分开放到了formdata,请求头还是默认的multipart/form-data

submitForm(formName) {
        this.$refs[formName].validate(async(valid) => {
            if (valid) {
                if(!this.src) {
                    this.$message.error('请选择图片上传')
                    return
                }
                const formdata = new FormData()
                formdata.append('avatar',this.src)
                formdata.append('form',this.formData)
                const data = await postSwiper({url:'alldata',data:formdata})
            } else {
            console.log('error submit!!');
            return false;
            }
        });
    },

nodejs中:

router.post('/',upload.array('avatar',3),(req,res) => {
    console.log('req.file',req.file);
    console.log('req.files',req.files);
    console.log('req.body',req.body.form.goodsname);
})

这个时候,图片虽然是能正常存储了,但是前端传递过来的其他参数就读取不到,单单指向req.body会显示里面还有个form对象数据,但是当我指向form对象具体属性的时候又显示为空,可能是因为请求头的原因,请求是application/json的时候,数据是能读取到的,但是我还要保证图片能存储到指定文件夹,数读取不到的问题应该怎么解决啊?
还是说我应该用什么样的方式去实现这个功能,我母鸡啊,有没有大锅教教啊,

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-06 19:23
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月3日
  • 已采纳回答 5月26日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀