收藏
回答

form表单和图片

问题模块
API和组件

如果form表单中 有图片这样的字段 , 如何将上传的图片和 form表单提交的数据关联上?

最后一次编辑于  2017-11-02  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

6 个回答

  • Hunter
    Hunter
    2017-11-02

    我现在的做法是 form表单提交的时候  同时上传图片 ,然后等待图片上传完之后 把服务器端返回的文件名赋值到formData ,目的是把这个文件名存到图片字段,  结果发现 上传图片好像是异步的, 所以导致 表单可能提交完了以后, 图片上传才返回结果, 导致formData中没有我要的图片名称值。

    2017-11-02
    赞同
    回复
  • Hunter
    Hunter
    2017-11-02

    目前想到一个别的办法, 先提交form表单 然后返回 标识, 然后在上传图片,把标识传过去做关联。  不知掉有没有更好的办法

    2017-11-02
    赞同
    回复
  • 厚光
    厚光
    2017-11-02

    选择图片的时候就上传,上传完成返回值附到表单中的字段,再提交表单

    2017-11-02
    赞同
    回复
  • 平风
    平风
    2017-11-02

    formSubmit: function(event) {

        var params = {

            name: event.detail.value.name,

            ...

        };


        // 先上传图片

        wx.uploadFile({

    url: 'https://.../upload',

    filePath: that.data.tempFilePath,  // wx.chooseImage所得

    name: 'file',

    success: function(res){

    var data = res.data

    params.filePath = data.filemame;


    // 保存表单

    wx.request({

    url: 'https://.../upload',

    data: params,

    success: function(res) {

    ...

    }

    })

    }

        })

    },

    imageTap: function() {

    wx.chooseImage({

      success: function(res) {

        that.data.tempFilePath = res.tempFilePaths[0];

        }

        });

    }

    2017-11-02
    赞同
    回复
  • Hunter
    Hunter
    2017-11-02

    谢谢解答, 但是有点疑问。

    3楼的方法可能会上传很多没用的图片啊。 4楼的方法 ,如果涉及到多图上传怎么办?

    2017-11-02
    赞同
    回复
  • 平风
    平风
    2017-11-03

    那就等全部上传完再保存表单,用伪代码表示就是:

    task.all([upload1, upload2, upload3]).then(save);

    2017-11-03
    赞同
    回复