vue2.0 使用axios提交form表单,为什么 上传文件格式的内容时是空的?

发布于 2022-09-05 10:35:33 字数 2990 浏览 10 评论 0

主要是input[type='file']这里的内容时空的

  <div class="subForm">
    <el-form :model="waterForm" :rules="rules" ref="waterForm" label-width="6rem">
      <el-form-item label="产品分类">
        <el-select v-model="waterForm.sec" placeholder="请选择" prop="sec">
          <el-option key="water" label="生态净水剂系列" value="water"></el-option>
          <el-option key="film" label="工业膜系列产品" value="film"></el-option>
          <el-option key="dete" label="实时在线检测产品" value="dete"></el-option>
        </el-select>
      </el-form-item>

      <el-form-item label="净水机型号" prop="name">
        <el-input v-model="waterForm.name"></el-input>
      </el-form-item>

      <el-form-item label="简介" prop="jj">
        <el-input type="textarea" v-model="waterForm.jj"></el-input>
        </el-form-item>

      <el-form-item label="图片上传" prop="pic">
        <input type="file" @change="getFile($event)"></input>
      </el-form-item>

      <el-form-item>
        <el-button type="primary" @click="onSubmit($event)">提交</el-button>
      </el-form-item>
    </el-form>
  </div>
<script>
  export default {
    data() {
      return {
        waterForm: {
          name: '',
          sec: '',
          jj: '',
          file: ''
        },
        rules: {
          sec : [
            { required: true, message: '请选择产品分类', trigger: 'blur' }
          ],
          name: [
            { required: true, message: '请输入净水剂型号', trigger: 'blur' }
            // { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ],
          jj : [
            { required: true, message: '请选择产品简介', trigger: 'blur' }
          ],
          pic : [
            { required: true, message: '请上传图片', trigger: 'blur' }
          ]
        }
      }
    },
    methods: {
      getFile(event) {
        this.waterForm.file = event.target.files[0];
      },
      onSubmit(event) {
        event.preventDefault();

        let formData = JSON.stringify(this.waterForm);

        console.log(formData);//这里的内容在下面
        this.$http.post('', formData).then(function (res) {
          if (res.status === 2000) {
            /*这里做处理*/
          }
        })
      }
    }
  }
</script>

表单输入

clipboard.png

浏览器控制台输出

clipboard.png

file里面是空的 没有内容


浏览器控制台输出的formData是这样的,是对的吗?
clipboard.png

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谁的新欢旧爱 2022-09-12 10:35:33

没设置上传的headr吧,,上传图片要用formData上传,不要用JSON转字符串,后台接不到的, post的formData后要加{headers:{'Content-Type':'multipart/form-data'}},还有html中要有form

var formData = new FormData($("#myForm"));
formData.append("upfile", document.getElementById('file').files[0]);
formData.append("aaa", 111);//添加其他需要上传的数据,这里可以用JSON.stringify转,涉及file上传的切记不要转;
let config = {
            headers:{'Content-Type':'multipart/form-data'}
          };  //添加请求头
this.$http.post('', formData,config).then(function (res) {
          if (res.status === 2000) {
            /*这里做处理*/
          }
        })

clipboard.png

鲸落 2022-09-12 10:35:33

您这边问题解决了吗? 我也是卡到了这里

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文