Как отправить фото методом POST через axios, React Native

Разрабатывается мобильное приложение на React Native, одна из функций которого - делать снимок и сразу отправлять его на сервер.

Для снимков используется библиотека expo-camera.

Код:

const takePicture = async()=>{
    if(cameraRef){
        try{
            const data = await cameraRef.current.takePictureAsync();
            
            console.log(data.uri);
            setImage(data.uri);
            
            
            
        }catch(e){
            console.log(e);
        }
    }
}
const savePicture = async () =>{
    if(image){
        try{
             await MediaLibrary.createAssetAsync(image);
            
            alert('Изображение сохранено');
            setImage(null);
        }catch(e){
            console.log(e);
        }
    }
}

Задача отправить только что совершенный снимок на сервер, используя axios.

Попытался запихнуть фото в Axio через url, но сервер получает объект undefined.

как отправляю:

var formData = new FormData();
            formData.append("image",{
            uri: image,
            name: 'photo.jpg',
            type: 'image/jpg'
            });
            axios.post('http://192.168.0.110:4000/upload', formData, {
                headers: {
                    "Content-Type": "multipart/form-data",
                },
            }).then((res)=>{
                console.log(res)
            })

как принимаю:

app.post("/upload", (req, res)=>{
    try{
        const photo = req.files.image

        
    }catch(e){
        console.log(e)
        return res.status(500)
    }
})

На сервере выходит ошибка: TypeError: Cannot read properties of undefined (reading 'image')

Данные, которые получает data при снимке: {"height": 4056, "uri": "file:///var/mobile/Containers/Data/Application/31FED614-92C6-4A9C-BD38-1C5326D59F36/Library/Caches/ExponentExperienceData/%2540anonymous%252FQue_client-d3f4dbbf-2172-4797-8e1e-250278e762cf/Camera/EA11D7A5-B7D5-4B6D-AEC5-3CD900A0189D.jpg", "width": 2376}

Как решить проблему?


Ответы (0 шт):