使用云开发,在自己的服务器管理微信云端的小程序数据,实现ServerLess的小程序服务。
在这个项目进行到测试阶段,发现了API的BUG问题,使用云开发HTTP API上传文件到微信小程序云存储,在小程序中使用 image src=cloud://xxxxfileID,控制台显示报错,不知道是什么原因。
按文档说明,使用的API是:
POST /tcb/uploadfile?access_token={token}
该调用成功后会返回一些重要参数,在之后还需要使用这些参数再次调用接口,完成将文件上传到腾讯云。
下面是一段Java代码,实现按参数返回的接口地址和其他参数,调用上传文件。
String fileName2 = Optional.of(fileName).orElse(file.getName()); MultipartBody requestBody = new MultipartBody.Builder() .addFormDataPart( "key" , path) .addFormDataPart( "Signature" , authorization) .addFormDataPart( "x-cos-security-token" , token) .addFormDataPart( "x-cos-meta-fileid" , cosFileId) .addFormDataPart( "file" , fileName2, RequestBody.create(MultipartBody.FORM, file)) .build(); Request request = new Request.Builder() .url(url) .post(requestBody) .build(); try (Response response = okHttpClient.newCall(request).execute()) { return response.body().string(); } catch (IOException e) { Integer code = 1 ; String codeString = "Call failure:" + e.getClass().getSimpleName(); String errorMessage = e.getMessage(); throw new WeChatCloudAPICallFailException(code, codeString, errorMessage); } |
在这一步,调用也成功,然后在微信开发者工具也能看到已上传的文件和文件夹。
但是,这个文件夹显示有点奇怪,还带了冒号,请看图:
上面显示的FileID也是比较奇怪,与调用 HTTP API 上传文件得到的FileID不一样,
HTTP API给我返回的值是cloud://test-p73gd.7465-test-p73gd-1259274660/upload_201907/MPCCb0a66c6ee1d7420f94aabb6d5bdcc925.png
如果是直接用小程序 wx.cloud.uploadFile 上传文件,那上传的文件夹不会出现这种奇怪的情况,而且文件fileID是正常可用的。
所以这个应该是云HTTP API的BUG。
遇到这个问题已经快一个月了,之前也有提过,很着急等着,麻烦官方反馈一下,不胜感激!