Я посылаю захватываемые камеры и выбранные в галереи изображения из приложения в WebView, и мне интересно, нужно ли для этого Android и iOS настраивать. Итак, как для Android, так и для iOS я преобразую данные изображения в формат URI Base64 и отправляю его с правильным типом MIME. Консоль. < /p>
Однако при тестировании на Android, хотя изображение правильно преобразуется, кажется, что изображение не отправляется должным образом. WebView не отображает изображение, и в журналах консоли не появляются данные изображения.export const requestCameraPermission = async (
webviewRef: React.RefObject,
navigation: StackNavigationProp
) => {
const { status } = await Camera.getCameraPermissionsAsync();
if (status === "granted") {
console.log("카메라 권한 허용됨");
const image = await takePhoto();
Platform.OS === "ios"
? console.log(
"ios 촬영 이미지 데이터 앞부분:",
image?.map((i) => i.substring(0, 100))
)
: console.log(
"android 촬영 이미지 데이터 앞부분:",
image?.map((i) => i.substring(0, 100))
);
if (image) {
webviewRef.current?.postMessage(
JSON.stringify({ action: "albumData", album: image })
);
navigation?.goBack();
} else {
console.log("이미지 데이터 x");
}
} else {
const { status: newStatus } = await Camera.requestCameraPermissionsAsync();
if (newStatus !== "granted") {
Alert.alert(
"Camera Permission Required",
"This app requires access to your camera. Please enable camera permissions in your device settings.",
[
{
text: "Go to Settings",
onPress: () => Linking.openSettings(),
},
]
);
}
}
};
< /code>
takephoto.ts
export const takePhoto = async () => {
const photo = await ImagePicker.launchCameraAsync({
quality: 1,
base64: true,
mediaTypes: ImagePicker.MediaTypeOptions.Images,
});
if (!photo.canceled && photo.assets?.length > 0) {
const result = photo.assets.map((p) => {
const mimeType = "image/jpeg";
return `data:${mimeType};base64,${p.base64}`;
});
return result;
}
return null;
};
Подробнее здесь: https://stackoverflow.com/questions/796 ... -work-on-a