收藏
回答

uploadFile fromData

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug uploadFile 工具 2.6 2.2.2

wx.uploadFile 添加fromData属性,后台采用SSH框架,无论是用struts2的接收方式,还是使用request.getParameter();方式,都获取不到传过去的值,但是可以接收到文件。 同样的后台接口和参数,wx.request可以接收到

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

24 个回答

  • 刘晓兵
    刘晓兵
    2018-08-14

    header: {

    "Content-Type": "multipart/form-data",

    'Cookie': header.Cookie

    },


    header 指定跟我一样吗


    2018-08-14
    赞同
    回复 11
    • 蒙
      2018-08-14

      url: ApiList.addComment,

      method: 'POST',

      filePath: that.data.img_arr[i],

      name: 'upload', //文件对应的参数名字(key)

      formData: fromData, //其它的表单信息

      header: { "Content-Type": "multipart/form-data" },

      dataType: 'json',




      我之前没有配置header,但是了上去还是没有效果。

      2018-08-14
      赞同
      回复
    • 刘晓兵
      刘晓兵
      2018-08-14

      "Content-Type" :  "multipart/form-data" , 是文件的协议啊。

      如果还有其他的值话 是不是 conten-type得换一下啊

      2018-08-14
      赞同
      回复
    • 蒙
      2018-08-14回复刘晓兵

      application/x-www-form-urlencoded;charset=utf-8


      只有这两个可以用,里面有文件的,总不能用text/xml吧


      2018-08-14
      赞同
      回复
    • 蒙
      2018-08-14回复刘晓兵

      关键这个问题有点奇葩,在本地测试是可以的,但是上传到服务器就不行了

      2018-08-14
      赞同
      回复
    • 刘晓兵
      刘晓兵
      2018-08-15回复

      本地可以。服务器不行 ? 你保证本地和服务器环境一致吗? 不是你们服务器有什么设置吧

      2018-08-15
      赞同
      回复
    查看更多(6)
  • WGinit
    WGinit
    2018-08-14

    奇葩有更甚,一样的请求,加上formdata上传到的是七牛云,结果把原先post直接更改成了get请求,,我特么懵比了好一阵...

    2018-08-14
    赞同
    回复 3
    • 蒙
      2018-08-15

      卧槽... 那你有没有出现像我这样的问题。 上传的formData参数 接收不到

      2018-08-15
      赞同
      回复
    • WGinit
      WGinit
      2018-08-15回复

      formData 后台同样接受不到.....

      2018-08-15
      赞同
      回复
    • 蒙
      2018-08-15回复WGinit

      看来这特么就是个坑啊

      2018-08-15
      赞同
      回复
  • sam
    sam
    2018-08-15

    用Post才行,get不行

    2018-08-15
    赞同
    回复 1
    • 蒙
      2018-08-16

      uploadFile method默认就是POST,两个都试过,不行的

      2018-08-16
      赞同
      回复
  • SHIELD
    SHIELD
    2018-08-16

    可以试试下面两种方式:

    1、

    Map<String, String[]> paramMap = request.getParameterMap();


    2、

    /**
     * 获取文件上传请求中的表单参数
     */
    private Map<String, String> getFileUploadFormParameter(HttpServletRequest request) {
        Map<String, String> params = Maps.newHashMap();
        try {
            DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
            ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
            List<FileItem> fileItems = servletFileUpload.parseRequest(request);
            for (FileItem fileItem : fileItems) {
                logger.info("getFileUploadFormParameter    fieldName----->" + fileItem.getFieldName());
                if (fileItem.isFormField()) {
                    //此处为表单参数,表单参数名称:fileItem.getFieldName(),表单参数值:fileItem.getString("UTF-8")。
                    params.put(fileItem.getFieldName(), fileItem.getString("UTF-8"));
                    logger.info("getFileUploadFormParameter    fieldValue----->" + fileItem.getString("UTF-8"));
                } else {
                    //此处为非表单参数即文档参数
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("getFileUploadFormParameter    Exception----->", e);
        }
        logger.info("getFileUploadFormParameter    params----->" + JSON.toJSONString(params));
        return params;
    }


    2018-08-16
    赞同
    回复 2
    • 蒙
      2018-08-16

      谢了啊,  第一种方式我试过,是没有效果的。因为我是struts2框架,所以第二种方法还没有试过。我这个问题有点奇葩 ,在开发的时候写服务器地址测试是无效的,但是上传为体验版,再测试服务器就可以成功获取到上传参数..

      2018-08-16
      赞同
      回复
    • SHIELD
      SHIELD
      2018-08-16

      额,那确实奇葩。。。

      2018-08-16
      赞同
      回复
  • masterZ
    masterZ
    2018-08-16

    有可能是跨域问题

    2018-08-16
    赞同
    回复
  • Wang
    Wang
    2018-08-16

    wx.uploadFile,目测是模拟的form表单的post提交,使用普通的接收form表单数据的方式试试。

    2018-08-16
    赞同
    回复
  • 南城一霸贾17
    南城一霸贾17
    2018-08-28

    同样掉进了这个坑里,还没找到取到的方法

    2018-08-28
    赞同
    回复