我正在學習這個Udemy react-native 課程,發現它有點過時了。
課程的第9節與RapidAPI AI圖片著色器合作,以選擇一個base64編碼的圖片。 但看起來API已經更新,不再使用base64,而是使用影像上傳。
我正在使用react-native-imagepicker,我不確定如何更新代碼以從設備的庫中挑選影像,并按照RapidAPI檔案中的方式上傳。
這是RapidAPI的例子代碼:
import axios from "axios"/span>;
const form = new FormData() 。
form.append("image", " ")。
form.append("renderFactor", "25") 。
const options = {
method: 'POST'。
url: 'https://ai-picture-colorizer.p.rapidapi.com/colorize-api-bin-mjbcrab',
headers: {
'content-type': 'multipart/form-data; boundary=---011000010111000001101001',
'x-rapidapi-host': 'ai-picture-colorizer.p.rapidapi.com'。
'x-rapidapi-key': '[MY-API-KEY]'。
},
data: '[form]'
};
axios.request(options).then(function (response) {
console.log(response.data)。
}).catch(function(error) {
console.error(error)。
});
這是我的代碼:
import React, {Component}. from 'reaction。
import {View, Text, Image, StyleSheet}。from 'react-native'。
import {Button}. from 'react-native-elements'/span>;
import ProgressBar from 'react-native-progress/Bar';
import {launchImageLibrary}. from 'react-native-image-picker'。
import axios from 'axios'/span>;
export default class App extends Component {
constructor(props) {
super(props)。
this.state = {
menu: true,
dataSource: null,
loading: true,
base64: null,
fileName: null。
};
}
selectGallaryImage(){
const options = {
includeBase64: true,
};
launchImageLibrary(options, response => {
if (response.didCancel) {
console.log('user canceled Image')。
} else if(response.error) {
console.log('Image picker error')。
} else if(response.customButton) {
console.log('user pressed custom Button')。
} else {
this.setState(
{
base64: response.assets[0].base64。
fileName: response.assets[0].fileName。
},
() => console. log('base64 fileName ', this.state.fileName) 。
);
this.goForAxios()。
}
});
}
goForAxios(){
const {fileName} = this.state。
const form = new FormData() 。
form.append('image', fileName)。
form.append('renderFactor', '10') 。
this.setState({menu: false})。)
console.log('Starting request')。
軸心
.request({
method: 'POST'。
url: 'https://ai-picture-colorizer.p.rapidapi.com/colorize-api-bin-mjbcrab',
headers: {
'content-type':
'multipart/form-data; boundary=---011000010111000001101001',
'x-rapidapi-host': 'ai-picture-colorizer.p.rapidapi.com'。
'x-rapidapi-key': '[MY-API-KEY]'。
},
data: '[form]'。
})
.then(response => {
this.setState({
loading: false,
dataSource: response.data,
});
})
.catch(error => {
console.error(error)。
});
}
...
}
我已經聯系了API作者,他們建議我參考RapidAPI檔案,但我似乎無法解決這個問題。
我一直收到[Error: Request failed with status code 500],而在RapidAPI中運行測驗端點的結果是OK,但 "此端點沒有回應實體"。
謝謝你的幫助。
uj5u.com熱心網友回復:
當服務器由于意外情況找不到合適的狀態碼時,通常會回傳一個500狀態碼。我不是React Native的專家,但在這里可以提供幫助。
你使用的是 react-native-image-picker,它已經在其回應中回傳了 Base64 值。所以用以下方法代替:
base64: response.assets[0].base64,
試試這個
base64: response.data,
如果還是不行,你可以使用其他提供類似功能的API。在RapidAPI Hub上你可以找到成千上萬的屬于同一類別的API。例如,使用這個影像著色 API。它可以讓你把影像作為URL來傳遞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/309142.html
標籤:
上一篇:如何在react-native中為Imagebackground的角落添加陰影?
下一篇:React導航-右鍵功能
