什么时候能解决云开发使用uploadFile HTTPAPI上传文件后不可用
发布于 7 年前 作者 guiying38 11158 次浏览 来自 官方Issues

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

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

3 回复

如下是PostMan测试用的模板,可以用 Import - Past Raw Text 完成导入,然后就可以按顺序测试:

模板内容太长,请下载文件:

https://7465-test-p73gd-1259274660.tcb.qcloud.la/WeChat%20%E4%BA%91%E5%BC%80%E5%8F%91API%E6%B5%8B%E8%AF%95POSTMAN.postman_collection.json?sign=d118e6c6413e45871456061b1e959fea&t=1564135628

1、首先填写你的APPID、APPSecret,调用GetAccessToken 获取TOKEN

2、然后,填TOKEN和其他几个参数,调用UploadFile

3、之后,根据UploadFile返回的结果,将得到的参数对号入座,调用PostFileToQCloud!

附上图片,一个请求将文件上传到腾讯云COS的PostMan控制台截图

从结果上看推测是参数填错了,你贴出来的代码不全,能否贴一下uploadfile这个api最终发出去的http报文以及后面那个multipart格式的http报文?

楼主你的上传照片能用了吗?

回到顶部