React Native 使用Javascript将音频文件POST到API端点

eyh26e7m  于 2023-05-18  发布在  React
关注(0)|答案(1)|浏览(185)

我试图将已经存储在移动终端中的文件POST到这个3 P shazam API来识别歌曲。但是我得到了这个错误代码:422. {“detail”:[{“loc”:[“body”,“file”],“msg”:“field required”,“type”:“value_error.missing”}]}
API:https://rapidapi.com/tipsters/api/shazam-core
端点:/v1/tracks/recognize
这是端点x1c 0d1x所需的信息
这就是我尝试的方式。

let audioFile = new File([""], fileUri, {type: "audio/wav"});

  const data = new FormData();
  data.append('file', audioFile);

  const options = {
    method: 'POST',
    headers: {
      'X-RapidAPI-Key': 'MY_API_KEY',
      'X-RapidAPI-Host': 'shazam-core.p.rapidapi.com',
      'Content-Type': 'application/octet-stream'
    },
    body: data
  };

  try {
    const response = await fetch(url, options);
    console.log(response.status);
    const result = await response.text();
    console.log(result);
    return result;
  } catch (error) {
    console.error(error);
  }

关于如何使用JS调用和发送音频文件,还有其他想法吗?

7xllpg7q

7xllpg7q1#

我使用expo-file-system中的uploadAsync方法解决了

  1. npm install expo-file-system
  2. import * as FileSystem from 'expo-file-system';
    1.发布文件
const response = await FileSystem.uploadAsync(url, audioFileUri, {
      fieldName: 'file',
      httpMethod: 'POST',
      uploadType: FileSystem.FileSystemUploadType.MULTIPART,
      headers: {
        'X-RapidAPI-Key': apiKey,
        'X-RapidAPI-Host': 'shazam-core.p.rapidapi.com',
      }
    });

相关问题