react native vision camera拍照上传到本地服务器

  1. 拍照功能参考这里,这里基于后续上传操作
  2. 前端
    //保存图片后调用upload方法  
    CameraRoll.saveAsset(`file://${photo?.path}`, {
                type: "photo"
            }).then(async (res) => {
                //res.node结构如下图
                await upload(res.node)
                //上传完后跳转页面
                props.navigation.navigate("UserInfo")
     })
    
    const upload = (data: any) => {
                //创建formData对象
                const formData = new FormData()
                formData.append("file", {
                    //获取路径(注意这里是uri不是url)
                    uri: data.image.uri,
                    //文件类型
                    type: 'image/jepg',
                    //图片名字
                    name: data.image.filename,
                })
                request({
                    url: "/adminapi/user/upload",
                    method: "POST",
                    data: formData,
                    headers: {
                        //使用表单上传添加以下格式
                        'Content-Type': 'multipart/form-data',
                    },
                }).then(res => {
                    console.log("ok")
                }).catch(err => {
                    console.log(err)
                })
    }

  3. 后端

 采用express框架这里不细说,上传图片需要用到 npm install --save multer 

const express = require("express")
const UserRouter = express.Router()
//引入multer
const multer = require("multer")
const path = require("path")


const storage = multer.diskStorage({
    destination: function (req, res, cb) {
        //存储位置,静态资源文件夹里
        cb(null, "public/avatar/")
    },
    filename: function (req, file, cb) {
      //修改将要保存图片的名字
        const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1E9)
       //获取后缀名
        const ext = path.extname(file.originalname);
        cb(null, uniqueSuffix + ext)
    }
})

const upload = multer({ storage: storage })

UserRouter.post("/adminapi/user/upload", upload.single("file"), (req, res) => {
    console.log(req.file, "4")
    res.send({
        ok: "22"
    })
})

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值