收藏
回答

wx.upload后后台接收不到图片文件

问题模块
审核

上传后, 后台解析request内容为空,是什么问题?

wx.uploadFile({

  url: 'http://192.168.1.102:8888/base_service/file/upload',

  filePath: that.data.tempFilePaths[0],

  method: 'POST',

  name: 'fileName', // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容

  header: { "content-type": "multipart/form-data", 'accept': 'application/json', },  //HTTP 请求 Header , header 中不能设置 Referer

  formData: {

    'user': 'test', 

  },

  success: function (res) {

    console.log(statusCode, res);

        wx.showModal({

          title: '上传文件返回状态',

          content: statusCode+'成功' + res.msg,

          success: function (res) {

            if (res.confirm) {

              console.log('用户点击确定')

            }

          }

        })

      // App.HttpService.savFiles(params) 

      // .then(data => {

      //   console.log(data)

      //   if (data.ret == 0) {

      //     this.showToast(data.msg)

    

      //   }

      // })

  }, fail: function (err) {

    console.log(statusCode, err);

  }

  });

-----------------------------------------后台代码--------------

@RequestMapping(value ="file/upload", method = RequestMethod.POST)

@ResponseBody

    public BaseResult fileUpload(HttpServletRequest  request, HttpServletResponse  response )

             throws ServletException, IOException {

    BaseResult result=BaseResult.createPrepareResult();

    Map<String,Object> map=result.getMap();

    List<Map<String,Object>> listMap=  new ArrayList<Map<String, Object>>();  ;

    try{


 

     request.setCharacterEncoding("UTF-8"); 

     // Create a factory for disk-based file items  

               DiskFileItemFactory factory = new DiskFileItemFactory();  

     

               // Set factory constraints  

               factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb  

               factory.setRepository(tempPathFile);// 设置缓冲区目录  

     

               // Create a new file upload handler  

               ServletFileUpload upload = new ServletFileUpload(factory);  

     

               // Set overall request size constraint  

               upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB  

               //解决上传文件名的中文乱码

                    upload.setHeaderEncoding("UTF-8"); 

                    //3、判断提交上来的数据是否是上传表单的数据

                    if(!ServletFileUpload.isMultipartContent(request)){

                        //按照传统方式获取数据

                    System.out.println("传统方式上传文件 ");

                        //return;

                    }

                    

               List<FileItem> items = upload.parseRequest(request);   // 得到所有的文件  这里为空???

               Iterator<FileItem> i = items.iterator();  

               while (i.hasNext()) {  

                   FileItem fi = (FileItem) i.next();  

                   String fileName = fi.getName();  

                   if (fileName != null) {  

                       File fullFile = new File(new String(fi.getName().getBytes(), "utf-8")); // 解决文件名乱码问题  

                       File savedFile = new File(uploadPath, fullFile.getName());  

                       fi.write(savedFile);  

                   }  

               }  


最后一次编辑于  2017-07-30
回答关注问题邀请回答
收藏

11 个回答

  • 神异与恒星
    神异与恒星
    2018-03-21

    怎么解决的?

    2018-03-21
    赞同
    回复
  • 齐柏林
    齐柏林
    2018-02-06

    大神,我也遇到你发的这个问题能教一下我吗???我也获取不到

    2018-02-06
    赞同
    回复
  • 阳
    2017-07-31

    一次只能传一个

    2017-07-31
    赞同
    回复
  • yuhao
    yuhao
    2017-07-30

    上传多个文件时,

    const uploadTask = wx.uploadFile({
        url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
        filePath: tempFilePaths[0],
        name: 'file',
        formData:{        'user': 'test'
        },
        success: function(res){        var data = res.data        //do something
        }
    })
    tempFilePaths[0]

    这里为啥只能指定一个文件路径,多个文件如何不行,转换成字符串后,报错,晕;

    WAService.js:4 uploadFile:fail createUploadTask:fail file not found

    什么情况,不支持多个 、??

    2017-07-30
    赞同
    回复
  • 明辉中行(xing)
    明辉中行(xing)
    2017-07-30

    yuhao 下午好

    可以加我的微光号:guang'zhibaobao

    求教 谢谢

    2017-07-30
    赞同
    回复
  • 明辉中行(xing)
    明辉中行(xing)
    2017-07-30

    都是大侠

    2017-07-30
    赞同
    回复
  • yuhao
    yuhao
    2017-07-30

    好的,解决了

    2017-07-30
    赞同
    回复
  • yuhao
    yuhao
    2017-07-30

    本地模拟测试也要用https吗?那如何测试!!

    2017-07-30
    赞同
    回复
  • 阳
    2017-07-30

    好像要用https请求

    2017-07-30
    赞同
    回复
  • yuhao
    yuhao
    2017-07-30

    这是测试你明白吗,就是因为接受不到数据

    2017-07-30
    赞同
    回复

正在加载...