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

发布于 7 年前作者 qfan6599 次浏览最后编辑 7 年前来自 ask

上传后, 后台解析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);  

                   }  

               }  

10 回复
lina
lina1 楼6 年前

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

yujie
yujie2 楼6 年前

都是大侠

xia29
xia293 楼6 年前

怎么解决的?

chao63
chao634 楼6 年前

好像要用https请求

gangma
gangma5 楼6 年前

一次只能传一个

leilin
leilin6 楼6 年前

yuhao 下午好

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

求教 谢谢

gangwu
gangwu7 楼6 年前

上传多个文件时,

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

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

xueming
xueming8 楼6 年前

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

rjin
rjin9 楼6 年前

好的,解决了

weijiang
weijiang10 楼5 年前

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