gpt4 book ai didi

react-native - 如何在 React Native Fetch 中将 curl 数据二进制转换为 HTTP 正文?

转载 作者:行者123 更新时间:2023-12-05 07:15:04 26 4
gpt4 key购买 nike

我可以通过 curl -X POST -u "apikey:x"--header "Content-Type: audio/flac"--data-binary @/Users/xx/Downloads/获得结果audio-file.flac "https://apixxx".

但在下面的 React Native 中会给出错误“400 Bad Request error: Stream was 36 bytes but needs to be at least 100 bytes.” --显然它把我作为字符串而不是二进制文件放入的“正文”。请问如何解决?谢谢!

 window.btoa = require('Base64').btoa;
let result = await fetch(
'https://apixxx' , {
method: 'POST',
headers: {
'Content-Type': 'audio/flac',
'Authorization': 'Basic '+btoa(`apikey:x`)
},
body: JSON.stringify({
'data-binary': '@./audio-file.flac',
}),
}
).then(response => response.json());

然后我用 formdata 尝试了另一个版本,给出了错误:“Bad Request”,代码:400,错误:“No JSON object could be decoded”

    window.btoa = require('Base64').btoa;
const formData = new FormData()
formData.append('file', {
uri: `file://${RNFS.DocumentDirectoryPath}/audio-file.flac`,
name: 'audio-file.flac',
type: 'audio/flac',
})
let res = await fetch('https://apixxx', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
'Authorization': 'Basic '+btoa(`apikey:x`),
},
body: formData,
}).then(response => console.log(response.json()));

请问如何解决?谢谢!

最佳答案

body 部分不正确,它必须是某种二进制数据,而不是字符串/json/对象。例如:

let blobData = new Blob([new Uint8Array(array)], {type: 'image/jpeg'})
const result = await fetch(url, {
method: 'POST',
body: blobData
})

如果你想发布你的本地文件 => 通过将 blobData 行替换为

来获取它的二进制数据
const response = await fetch(your_file_path);
const blobData = await response.blob();

关于react-native - 如何在 React Native Fetch 中将 curl 数据二进制转换为 HTTP 正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59738526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com