补充,我底层抓了一下,微信小程序发的包应该没问题,是java后端的错。
wx.uploadFile 传输图片,java后端报错,显示Header部分有问题,如何解决?调试基础库,2.28.1,模拟机型:iPhone6,也尝试真机调试,但出的错误一致 后台报错: org.apache.tomcat.util.http.fileupload.MultipartStream$MalformedStreamException: Header section has more than 10240 bytes (maybe it is not properly terminated) 网上关于此报错的解析:header-part结束符应该是 :\r \n \r \n 也就是说header-part应该是以这四个字符结束,但是没有读到。 我的问题在于,几个月前我的这段代码是没问题的,可以正常跑,但是小程序上线后,发现用户无法上传图片,后台测试,就出了这个问题 前端: uploadWithPic(e){ wx.uploadFile({ //filePath 不能是是网络资源 url: this.data.http+"register", filePath: this.data.imagePath, formData: {...e}, header:{"Content-Type": "multipart/form-data", "accept": "application/json"}, name: 'image', success(res){} }) } 后端: @PostMapping("/register")//处理表单,传回来处理之后,把图片和map传给server处理 public String register(HttpServletRequest request) throws IOException, InvocationTargetException, NoSuchMethodException, IllegalAccessException { log.info("controller: register"); }
2022-12-24https://developers.weixin.qq.com/s/abDja2mq7oCa 补充代码片段
如何使用RenderingContext压缩图片(压缩后图片为空白)?借鉴了网上的代码,使用画布,将图像重绘后,保存。试了两种保存方法,都返回空白图片。基础库:2.21.4 WXML: JS: (确定了传入的img_src是对的,在开发者工具里似乎把本地图片链接都转为http链接了) var that = this; wx.getImageInfo({ src: img_src, success(res){ //---------利用canvas压缩图片-------------- var canvasHeight =300; var canvasWidth = 400; that.setData({ cHeight: canvasHeight, cWidth: canvasWidth }); wx.createSelectorQuery() .select('#myCanvas') // 在 WXML 中填入的 id .fields({ node: true, size: true }) .exec((res) => { // Canvas 对象 const canvas = res[0].node // Canvas 画布的实际绘制宽高 const renderWidth = res[0].width const renderHeight = res[0].height // Canvas 绘制上下文 const ctx = canvas.getContext('2d') // 初始化画布大小 const dpr = wx.getWindowInfo().pixelRatio canvas.width = renderWidth * dpr canvas.height = renderHeight * dpr ctx.scale(dpr, dpr) var img = canvas.createImage(); img.src= img_src; ctx.drawImage(img, 0, 0,canvasWidth,canvasHeight) //下面是两种保存方法, wx.canvasToTempFilePath({ canvas: canvas, success(res){ that.setData({ temp: res.tempFilePath }) _img = res.tempFilePath; console.log("chenggong") }, fail(res){ console.log("shibai") console.log(res.data) } }) const path = canvas.toDataURL("image/jpeg", 0.7) //返回值是一个数据url,是base64组成的图片的源数据、可以直接赋值给图片的src属性 that.setData({ base64_img: path, base64: true }) console.log(path) }) } })
2022-09-05补充: [图片] 图1 ----------------------- [图片] 图2 ------------------------- [图片] 图3
wx:if 和 hidden第二次条件改变后无法重新渲染?代码如下,使用radio,默认”0“,不渲染。 第一次渲染正常,对应部分未渲染出来,选择一次(isRepresented=1)后,渲染出来了,再次选择(isRepresented=0),却无法隐藏了。使用hidden也是一样, html: <view> <radio-group class="radio-group" bindchange="bindRep"> <label class="radio" wx:for="{{represented}}" wx:key="item.value"> <radio value="{{item.value}}" checked="{{item.checked}}"/>{{item.name}} </label> </radio-group> </view> <view wx:if="{{isRepresented}}" class='phone'> <text>您的手机号</text> <input name="relative_phone" type='text' placeholder-style='font-size:28rpx;' placeholder='{{tools.selectName(user.relative_phone, "您的联系电话")}}'></input> </view> js: isRepresented: 0, represented:[ {name: "否", value:0,checked:'true'}, {name: "是", value:1} ],
2022-05-31