我们在项目开发过程中,使用JS-sdk中 file.save()方法报了如下错误:invalid multipart format: request Content-Type isn't multipart/form-data
请问如何解决?
开发环境为react-native 0.63.3 leancloud-realtime ^5.0.0-rc.5 leancloud-storage: "^4.10.0",

追问,即时通讯中,成功创建了conversation,但是当调用send方法时,一直会报 [object Object] is not a Message的错误。

您好,请您提供一下构建文件并上传、发送的代码片段,以帮助我们复现该问题。

我本地新创建了一个项目,按照您提供的代码片段上传文件并未发现问题。
我的测试环境:

  • react-native@0.63.4
  • leancloud-storage@4.10.0
  • leancloud-realtime@5.0.0-rc.5
  • @leancloud/platform-adapters-react-native@0.6.2
  • react-native-image-crop-picker@0.35.2

发送消息失败与您引入 TextMessage 的方式有关,建议您通过以下方式引入:

import {TextMessage} from 'leancloud-realtime/im';

感谢!已经可以成功发送了。但是,


这里发送的是 request payload [object Object]
你的例子是这样的吗,得到的返回就是 error: "invalid multipart format: no multipart boundary param in Content-Type",
我这里的data 是取得 {blob: {uri: image.sourceURL}} 不知道是不是这里的错误,请问你取得是什么呢

格式是正确的,我使用的上传代码:

ImageCropPicker.openPicker({
      cropping: true,
      cropperCircleOverlay: true,
      mediaType: 'photo',
      cropperChooseText: '截取',
      cropperCancelText: '取消',
    }).then((image) => {
      console.log(image);
      const name = image.filename;
      const data = {blob: {uri: image.sourceURL}};
      const metaData = image.mime;
      const avatar = new AV.File(name, data, metaData);
      avatar.save().then(
        (file) => {
          console.log('success');
        },
        (error) => {
          console.log('error:', error);
        },
      );
    });

error: "invalid multipart format: no multipart boundary param in Content-Type"

这个错误表示上传请求的 Content-Type 头部中没有 boundary ,你的请求:
正常的请求:


你检查下是否手动设置了 Content-Type

我是手动设置了content-type 因为如果不设置,就是一开始的报错 invalid multipart format: request Content-Type isn't multipart/form-data

抱歉我这边没能成功复现你遇到的问题,建议将 leancloud-storage@leancloud/platform-adapters-react-native 升级到最新版,并按照 文档5 中介绍的方式初始化 SDK 。

这里有一个 React Native 上传图片的 Demo6 供你参考(请使用 2016 分支的代码)。

经测试,Iphone 11 下的 ios 14.3系统 模拟器报的如上错误, 切换其他模拟器(iphone 8) 包括真机(iphone x)都没有问题, 不知道你可不可以复现