乐趣区

关于uni-app:uniapp-选择图片上传到服务器云储存

1、抉择图片到 node 服务器

uni-app 代码

uni.chooseImage({success: (res) => {
        let tempFilePaths = res.tempFilePaths;
        tempFilePaths.forEach((item) => {
            uni.uploadFile({
                url: '', // 服务器地址
                fileType: "image", //ZFB 必填, 不然报错
                filePath: item, // 这个就是咱们下面拍照返回或者先中照片返回的数组
                name: 'file',
                success: (uploadFileRes) => {}});
        })
    }
});

node 服务代码

const path = require("path"); // 导入 path 模块
const multer = require("multer"); // 导入 multer 模块
const fs = require("fs"); // 导入文件操作模块
const util = require("../public/util");
const upload = multer({dest: "tmp/"});
let express = require("express");
let router = express.Router();
router.post("/upload", upload.single("file"), function (req, res) {
  let imgFile = req.file; // 获取图片上传的资源
  var tmp = imgFile.path; // 获取长期资源
  let ext = path.extname(imgFile.originalname); // 利用 path 模块获取 用户上传图片的 后缀名
  let newName =util.getNowFormatDate('-','-')+ "-"+new Date().getTime() + Math.round(Math.random() * 10000) + ext; // 给用户上传的图片重新命名 避免重名
  let newPath = "/public/images/" + newName; // 给图片设置寄存目录  提前给以后文件夹下建设一个   images 文件夹!!!!let fileData = fs.readFileSync(tmp); // 将上传到服务器上的长期资源 读取到 一个变量外面
  let filePath = path.join(__dirname, '..'+newPath);
  fs.writeFileSync(filePath, fileData); // 从新书写图片文件  写入到指定的文件夹下
  res.send(newPath); // 上传胜利之后  给客户端响应
});

router.get('/public/images/*', function (req, res) {
    let newPath = ".."+req.url;
    let filePath = path.join(__dirname,newPath);
    res.sendFile(filePath);
})

module.exports = router;

2、抉择图片到云贮存

uni.chooseImage({success: (res) => {
        let tempFilePaths = res.tempFilePaths;
        tempFilePaths.forEach((item) => {
           uniCloud.uploadFile({
                filePath: item,
                cloudPath: 'item.jpg',
                success(res) { },
                fail(res) { },
                complete() {}
            });
        })
    }
});
退出移动版