- 小程序给用户主动发消息怎么发?
我是小程序开发者,小程序上有些线下门店,用户可以在线下门店下单,下单后我需要通知门店管理员备货(门店管理员不需要与小程序互动)。 看了各种文档比较晕,不明白小程序是否可以直接给用户发消息,还是需要借助公众号?分几步,具体参考哪些文档? 谢谢
10-31 - 服务端上传文件到云存储提示not well-formed multipart/form-data?
服务端上传文件到云存储分两步: 1、获取上传链接 2、上传文件 如官方说明所述https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/storage/uploadFile.html 我在第二步时遇到报错 The body of your POST request is not well-formed multipart/form-data. 请大侠支招! 代码如下 主文件 String fileName = path.getFileName().toString(); String cloudPath = "shenqitest/" + fileName; WxCloudUploadFileResult uploadResult = cloudService.uploadFile(this.env, cloudPath); System.out.println(uploadResult.toString()); Map<String, File> fileParams = new HashMap<>(); fileParams.put("file", path.toFile()); Map<String, String> otherParams = new HashMap<>(); otherParams.put("key", cloudPath); otherParams.put("Signature", uploadResult.getAuthorization()); otherParams.put("x-cos-security-token", uploadResult.getToken()); otherParams.put("x-cos-meta-fileid", uploadResult.getCosFileId()); // //Map<String, String> headerParams = new HashMap<>(); //headerParams.put("Content-Type", "multipart/form-data"); // 不加boundary会报错: The specified method is not allowed against this resource. String resp = HTTPUtils.uploadFile(uploadResult.getUrl(), fileParams, otherParams, null); 工具文件 public static String uploadFile(String url, Map<String, File> fileParams, Map<String, String> otherParams, Map<String, String> headerParams) { CloseableHttpClient httpClient = HttpClients.createDefault(); String result = ""; try { HttpPost httpPost = new HttpPost(url); //设置请求头 if (headerParams != null && headerParams.size() > 0) { for (Map.Entry<String, String> e : headerParams.entrySet()) { String value = e.getValue(); String key = e.getKey(); if (StringUtils.isNotBlank(value)) { httpPost.setHeader(key, value); } } } MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setCharset(StandardCharsets.UTF_8); //builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//加上此行代码解决返回中文乱码问题 // 文件传输http请求头(multipart/form-data) if (fileParams != null && fileParams.size() > 0) { for (Map.Entry<String, File> e : fileParams.entrySet()) { String fileParamName = e.getKey(); File file = e.getValue(); if (file != null) { //String fileName = URLEncoder.encode(file.getName(), StandardCharsets.UTF_8); String fileName = file.getName(); //try (InputStream stream = new FileInputStream(file)) { // 请求时要用stream builder.addBinaryBody(fileParamName, new FileInputStream(file), ContentType.APPLICATION_OCTET_STREAM, fileName); //} } } } // 普通参数请求头(application/json) ContentType contentType = ContentType.create(ContentType.APPLICATION_JSON.getMimeType(), StandardCharsets.UTF_8); if (otherParams != null && otherParams.size() > 0) { for (Map.Entry<String, String> e : otherParams.entrySet()) { String value = e.getValue(); if (StringUtils.isNotBlank(value)) { builder.addTextBody(e.getKey(), value, contentType); } } } HttpEntity entity = builder.build(); httpPost.setEntity(entity); CloseableHttpResponse response = httpClient.execute(httpPost); HttpEntity responseEntity = response.getEntity(); if (responseEntity != null) { // 将响应内容转换为字符串 result = EntityUtils.toString(responseEntity, StandardCharsets.UTF_8); } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } 要传的文件是jpeg,文件的ContentType试过APPLICATION_OCTET_STREAM、IMAGE_JPEG、MULTIPART_FORM_DATA、DEFAULT_BINARY,其它参数的ContentType试过DEFAULT_TEXT、MULTIPART_FORM_DATA、APPLICATION_JSON,都是一样的结果
07-18 - 云存储上传接口少参数
[图片] 上传文件到云存储的接口,还需要一个放本地文件的参数吧?没有本地文件,上传个寂寞? https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/storage/uploadFile.html 背景: 使用http api批量上传文件到云存储
07-17 - 服务端调用云开发报错[100003] Param Invalid: env check ,什么原因?
java服务端,使用了开源SDK weixin-java-miniapp <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> <version>4.6.0</version> </dependency> public void downloadFiles() throws WxErrorException { WxMaCloudService service = wxMaService.getCloudService(); String s = service.invokeCloudFunction(this.env, "cloudFileManager", "{\"functionName\":\"listDirectoryFiles\",\"params\":{\"path\":\"shenqi_output/\"}}"); log.info("CloudFunction returns " + s); } 访问云数据库正常,但访问这个云函数 cloudFileManager 就报错 [图片] 而在微信开发工具上使用云端测试同样的参数调用正常。 云函数cloudFileManager的内容(有多个方法) // 云函数入口文件 const cloud = require('wx-server-sdk') const CloudBase = require('@cloudbase/manager-node') const path = require("path") const {storage} = new CloudBase() cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境 // 获取云存储的所有文件信息 async function listDirectoryFiles(params) { const {path} = params // 接口功能:列出文件夹下的所有文件 // 接口声明:listDirectoryFiles(cloudPath: string): Promise<IListFileInfo[]> return await storage.listDirectoryFiles(path); } 环境ID我都核对了,没有问题,而且我的服务端都使用的是同一个环境ID,访问云数据库都没问题。请帮忙找找问题,谢谢
07-12 - 云函数开启本地调试提示失败,是为什么?
[图片]
06-28 - 外部如何获得access_token没说
我要从外部访问云开发数据库的数据,参考了这个文档 https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/backend-api.html 但是getAccessToken 这个接口具体地址是什么? 给的参考链接里没有说 还有如何访问这个接口,谢谢
03-01