node查询七牛云上的文件信息

news2024/12/23 3:21:09
const qiniu = require('qiniu')
const {
  getQiNiuKey,
} = require('./tools')

//#region 七牛云
const { accessKey, secretKey } = getQiNiuKey()
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey)
let config = new qiniu.conf.Config()
// 空间对应的机房
config.zone = qiniu.zone.Zone_z1

const putPolicy = new qiniu.rs.PutPolicy({
  //scope: 'xutongbao-video',
  scope: 'xutongbao-static',
  returnBody: `{
    "code": 200,
    "data": {"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","file":"$(fname)"},
    "message": "成功"
  }`,
  expires: 3600 * 24 * 30, //一个月
})

const uploadToken = putPolicy.uploadToken(mac)
let formUploader = new qiniu.form_up.FormUploader(config)
let putExtra = new qiniu.form_up.PutExtra()
putExtra.checkCrc = false

let bucketManager = new qiniu.rs.BucketManager(mac, config);

module.exports = {
  uploadToken,
  formUploader,
  putExtra,
  bucketManager
}

//#endregion
//删除CDN文件
const sdCdnDelete = async (req, res) => {
  let { uid } = req.body

  var bucket = 'xutongbao-static'
  var key = 'img/123.jpg'

  bucketManager.stat(bucket, key, function (err, respBody, respInfo) {
    if (err) {
      console.log(err)
      //throw err;
    } else {
      if (respInfo.statusCode == 200) {
        console.log(respBody.hash)
        console.log(respBody.fsize)
        console.log(respBody.mimeType)
        console.log(respBody.putTime, moment(respBody.putTime / 10000))
        console.log(respBody.type)
      } else {
        console.log(respInfo.statusCode)
        console.log(respBody.error)
      }
    }
  })

  const now = Date.now()
  const editObj = {
    updateTime: now,
  }
  let { editStr } = getSqlUpdateStr({ editObj })
  const err = await runSql(`UPDATE sd SET ${editStr} WHERE uid = '${uid}'`)
  if (err) {
    res.send({
      code: 400,
      data: err,
      message: '编辑失败',
    })
  } else {
    await refreshRedis({ tableName: 'sd' })
    res.send({
      code: 200,
      data: {
        uid,
      },
      message: '编辑成功',
    })
  }
}

 https://developer.qiniu.com/kodo/1289/nodejs#rs-batch-delete

批量查询:

const sdCdnDelete = async (req, res) => {
  let { uid } = req.body

  let bucket = 'xutongbao-static'

  let statOperations = [
    qiniu.rs.statOp(bucket, 'img/123.jpg'),
    qiniu.rs.statOp(bucket, 'img/logo.png'),
  ]
  bucketManager.batch(statOperations, function (err, respBody, respInfo) {
    if (err) {
      console.log(err)
      //throw err;
    } else {
      // 200 is success, 298 is part success
      if (parseInt(respInfo.statusCode / 100) == 2) {
        respBody.forEach(function (item) {
          if (item.code == 200) {
            console.log(
              item.data.fsize +
                '\t' +
                item.data.hash +
                '\t' +
                item.data.mimeType +
                '\t' +
                item.data.putTime +
                '\t' +
                item.data.type
            )
            console.log(item.data.putTime, moment(item.data.putTime / 10000))
          } else {
            console.log(item.code + '\t' + item.data.error)
          }
        })
      } else {
        console.log(respInfo.statusCode)
        console.log(respBody)
      }
    }
  })

  const now = Date.now()
  const editObj = {
    updateTime: now,
  }
  let { editStr } = getSqlUpdateStr({ editObj })
  const err = await runSql(`UPDATE sd SET ${editStr} WHERE uid = '${uid}'`)
  if (err) {
    res.send({
      code: 400,
      data: err,
      message: '编辑失败',
    })
  } else {
    await refreshRedis({ tableName: 'sd' })
    res.send({
      code: 200,
      data: {
        uid,
      },
      message: '编辑成功',
    })
  }
}

 

 

参考链接:

https://developer.qiniu.com/kodo/1289/nodejs#rs-batch-delete

https://chat.xutongbao.top/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标跟踪方向开源数据集资源汇总

Temple Color 128 数据集下载链接:http://suo.nz/2dKEEL 本数据集包含一大组 128 种颜色序列,带有基本事实和挑战因素注释(例如,遮挡) NfS高帧率视频数据集 数据集下载链接:http://suo.nz/34o8df 第一个…

旺店通·企业奇门与金蝶云星空对接集成订单查询连通销售订单新增(旺店通销售-金蝶销售订单-小红书)

旺店通企业奇门与金蝶云星空对接集成订单查询连通销售订单新增(旺店通销售-金蝶销售订单-小红书) 接通系统:旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理,之后围绕电商经营管理中的核心管理诉求,先后布局流量获取、会…

react-route的路由

React-Router是一个基于React的强大路由库,它可以帮助我们在React应用中实现页面之间的跳转和路由管理。本文将详细介绍React-Router的路由功能、常用功能模块、路由传参和路由嵌套,并提供相关代码和解释。 路由功能 React-Router通过管理URL和组件的映…

Vue3 ~

变动 实例 const app new Vue({}) Vue.use() Vue.mixin() Vue.component() Vue.directive()const app Vue.createApp({}) app.use() app.mixin() app.component() app.directive()createApp 代替 new Vue 允许多个根标签 createStore 代替 Vue.use(Vuex) createRouter 代替…

保障网络安全:IP代理识别API的作用与应用

引言 随着互联网的不断发展,网络安全问题已经变得愈发重要。在网络上,恶意用户可以利用IP代理隐藏其真实身份,从而发动各种网络攻击或欺诈行为。为了保障网络安全,IP代理识别API成为了一种不可或缺的工具,本文将深入探…

计算机竞赛 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的数学公式识别算法实现 该项目较为新颖,适合作为竞赛课题方向,学…

Apollo配置更新通知

文章目录 启用方式hook编写服务部署本地部署容器化部署构建镜像 使用 ⚡️: 应领导要求想要把 Apollo 配置变更信息更新到企业微信群中,线上出现异常可根据变更时间,快速反应是否是配置变更导致异常 启用方式 🌛: 前提有一个可正常使用的Apo…

微服务保护-Sentinel

初识Sentinel 雪崩问题及解决方案 雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时&a…

深度学习pytorch之tensorboard和transform的使用

这样操作是引入tensorboard,申明一个类,logs是生成日志的文件夹,事件就在这里产生。 writer为申明的实例,这里做的画线操作 第一个是tags是图片的标签,第二个参数是y值,第三个是步长,x值 关闭…

Kotlin simple convert ArrayList CopyOnWriteArrayList MutableList

Kotlin simple convert ArrayList CopyOnWriteArrayList MutableList Kotlin读写分离CopyOnWriteArrayList_zhangphil的博客-CSDN博客Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多…

TDengine 与煤矿智能 AI 视频管理系统实现兼容性互认

煤矿行业是一个充满危险和复杂性的领域,具备产业规模大、分布地域广、安全性要求高等特点,为了实现智能化预警、预测等目的,煤矿企业纷纷采用现代化的技术来提高安全性、生产效率和管理水平。煤矿智能 AI 视频管理系统可以助力企业更好地进行…

JMeter:断言之响应断言

一、断言的定义 断言用于验证取样器请求或对应的响应数据是否返回了期望的结果。可以是看成验证测试是否预期的方法。 对于接口测试来说,就是测试Request/Response,断言即可以针对Request进行,也可以针对Response进行。但大部分是对Respons…

基于SSM的博客系统开发

文章目录 前言1.技术选型:2.主要功能:3.项目展示:前台页面:后台页面: 总结 前言 提示:人类与强权的斗争,就是记忆与遗忘的斗争。 --米兰昆德拉《笑忘录》 1.技术选型: 开发工具&am…

android 存储新特性

分区存储 本页内容应用访问限制将分区存储与 FUSE 搭配使用 FUSE 和 SDCardFSFUSE 性能微调减轻与 FUSE 相关的性能影响隐私优势远超性能劣势MediaProvider 和 FUSE 更新 分区存储会限制应用访问外部存储空间。在 Android 11 或更高版本中,以 API 30 或更高版本为…

Linux Day16 多线程的一些常见问题

目录 一、多线程fork() 问题一:多线程中某个线程调用 fork(),子进程会有和父进程相同数量的线程吗? 1.1.1 不使用fork前,让线程函数和主程序打印其进程号 结果: 结论: 1.1.2 在主程序中加入fork 结果…

个人博客网站一揽子:Docker搭建图床(Lsky Pro)

Lsky Pro 介绍 Lsky Pro 是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己的云上相册,亦可以当作你的写作贴图库。 兰空图床始于 2017 年 10 月,最早的版本由 ThinkPHP 5 开发&#xff0…

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

JavaEE学习之--类和对象

💕粗缯大布裹生涯,腹有诗书气自华💕 作者:Mylvzi 文章主要内容:Java学习之--类和对象 类和对象 类的实例化: 1.什么叫做类的实例化 利用类创建一个具体的对象就叫做类的实例化! 当我们创建了…

【消息中间件】详解mq消息积压

作者简介 目录 1.产生原因 2.解决办法 2.1.事前处理机制 2.2.事中处理机制 2.3.事后处理机制 1.产生原因 消息积压(Message Backlog)指的是在消息队列(MQ)系统中等待被处理的消息数量超过了正常的处理速度,导致消…

Nvm任意切换node版本号

前言: nvm(Node Version Manager)是一个用于管理Node.js版本的工具。它允许您在同一台计算机上同时安装和切换不同版本的Node.js。使用nvm,您可以轻松地在项目之间切换Node.js版本,而无需手动安装和卸载不同的版本。这…