收藏
回答

什么时候能解决云开发使用uploadFile HTTPAPI上传文件后不可用

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wx2daca2e09c843f11 2.7.7

使用云开发,在自己的服务器管理微信云端的小程序数据,实现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。

遇到这个问题已经快一个月了,之前也有提过,很着急等着,麻烦官方反馈一下,不胜感激!

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

3 个回答

登录 后发表内容