首页 > 解决方案 > 反应本机中的图像上传未到达服务器

问题描述

我正在使用 react native 将图像发送到 nodeJs 服务器。我注意到,当我提出请求时,请求中有一个图像文件,但响应失败,说文件上传需要照片。然而,该请求在邮递员上完美运行。这是代码示例。我正在使用反应原生图像裁剪选择器来选择图像。

const choosePhotoFromLibrary = () => {
    ImagePicker.openPicker({
        width: 300,
        height: 400,
        cropping: true,
        // multiple: true,
        multiple: false,
        mediaType: 'photo'
    }).then((image) => {
        setPhotos(image.path)
    }).catch(err => {
        console.log(err);
    })
}

getStoreId()
const createProduct = async () => {
    console.log(typeof photos);
    const data = new FormData()
    data.append('name', productName)
    data.append('description', description)
    data.append('price', price)
    data.append('category', productCategory)
    data.append('sub-category', productSubCategory)
    data.append('condition', productCondition)
    data.append('photos', photos)
    data.append('type', `Women's wear`)

    console.log(data);
    var config = {
        method: 'post',
        url:url,
        headers: {
            'token': token,
            'Content-Type': 'multipart/form-data'
        },
        data: data
    };
    try {
        const product = await axios(config)
        console.log(product);
    } catch (err) {
        console.log(err.response);
    }

标签: node.jsreactjsreact-nativemultermultipart

解决方案


代替

data.append('photos', photos)

像这样写

data.append('photos', {
   name: "Example.jpg",
   uri: photos, // This should be something like 'file://...'
   type: "image/jpg" // MIME type of file
})

推荐阅读