当前位置: 首页 > news >正文

nodejs 之 express 实现下载网络图片并上传到七牛云对象存储oss空间

为方便阅读,本文将所有逻辑放在一个函数里,可根据自己的情况拆分。

安装依赖
在项目根目录下运行以下命令安装依赖

npm install express qiniu axios

业务逻辑
在项目根目录下创建一个名为 app.js 的文件,并添加以下内容

const express = require('express');
const app = express();
const axios = require('axios');
const qiniu = require('qiniu');// 填写你的七牛云 Access Key 和 Secret Key 以及 空间名称 bucket 
const accessKey = 'YOUR_QINIU_ACCESS_KEY';
const secretKey = 'YOUR_QINIU_SECRET_KEY';
const bucket = 'YOUR_QINIU_BUCKET';// 创建七牛云对象并配置
const config = new qiniu.conf.Config();
const formUploader = new qiniu.form_up.FormUploader(config);
const putExtra = new qiniu.form_up.PutExtra();// 获取七牛认证信息
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
const options = {scope: bucket,expires: 3600 // 设置凭证的有效时间,单位为秒,默认为3600秒(1小时)
};
const putPolicy = new qiniu.rs.PutPolicy(options);
const uploadToken = putPolicy.uploadToken(mac);// 设置 Express 路由
app.get('/download', async (req, res) => {const imageUrl = req.query.url;// 下载图片const response = await axios.get(imageUrl, {responseType: 'arraybuffer'});const dataBuffer = Buffer.from(response.data, 'binary');// 生成唯一的文件名const key = Date.now().toString() + '.jpg';// 上传图片到七牛云formUploader.put(uploadToken,key,dataBuffer,putExtra,function (respErr, respBody, respInfo) {if (respErr) {throw respErr;}if (respInfo.statusCode === 200) {res.send('图片上传成功!');} else {res.send('图片上传失败!');}});
});// 启动 Express 服务器
app.listen(3000, () => {console.log('Server is running on port 3000');
});

你可以通过访问 http://localhost:3000/download?url=IMAGE_URL
来下载远程图片并将其存储到七牛云,其中 IMAGE_URL 是你希望下载的远程图片的URL

http://www.lryc.cn/news/128705.html

相关文章:

  • 综合能源系统(7)——综合能源综合评估技术
  • 【JS 线性代数算法之向量与矩阵】
  • 配置 yum/dnf 置您的系统以使用默认存储库
  • Docker容器与虚拟化技术:Docker资源控制、数据管理
  • python生成器有几种写法,python生成器函数例子
  • 动态动画弹窗样式css
  • 数据生成 | MATLAB实现WGAN生成对抗网络数据生成
  • PHP实现每日蛋白质摄入量计算器
  • vue elment 表格内表单校验代码
  • 如何在Stream流中分组统计
  • windows程序基础
  • 【LeetCode】买卖股票的最佳时机最多两次购买机会
  • 【C++ 记忆站】命名空间
  • 《离散数学及其应用(原书第8版)》ISBN978-7-111-63687-8 第11章 11.1.3 树的性质 节 第664页的例9说明
  • 【云原生】K8S存储卷:PV、PVC详解
  • 谈谈IP地址和子网掩码的概念及应用
  • vue2 如何监听数组的变化
  • CSS中的transform属性有哪些值?并分别描述它们的作用。
  • vue3跳转页面后 海康监控实例不销毁
  • Unity 射线检测
  • 微信支付报非法的密钥大小: Caused by: java.security.InvalidKeyException: Illegal key size
  • React 调试开发插件 React devtools 的使用
  • linux 搜索命令
  • 如何使用Spark/Flink等分布式计算引擎做网络入侵检测
  • 基于php驾校驾驶理论考试模拟系统
  • vue3+elementPlus table里添加输入框并提交校验
  • ios swift5 collectionView 瀑布流(两列)
  • 创建一个简单的HTML Viewer应用程序
  • 无公网IP,公网SSH远程访问家中的树莓派教程
  • 「UG/NX」Block UI 超级截面SuperSection