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

做网站发房源综合语录nba最新交易动态

做网站发房源综合语录,nba最新交易动态,徐州做网站设计,网站建设骗子说明:在使用cool-admin这个低代码平台时,发现官方的cos上传插件有问题,总是报错 substring,故自己找解决方案,修改本地的upload方法改为云端上传。 解决方案: 安装腾讯云cos的nodeJS SDK pnpm i cos-node…

说明:在使用cool-admin这个低代码平台时,发现官方的cos上传插件有问题,总是报错 substring,故自己找解决方案,修改本地的upload方法改为云端上传。


解决方案:

  1. 安装腾讯云cos的nodeJS SDK
pnpm i cos-nodejs-sdk-v5
  1. admin-midway/src/modules/plugin/hooks/upload 目录下新建工具文件upload_cos.ts 内容如下:
const COS: any = require('cos-nodejs-sdk-v5');
import fs = require('fs');// 定义配置接口
interface CosConfig {Bucket?: string;Region?: string;Prefix?: string;
}// 定义上传参数接口
interface PutObjectParam {key: string;buffer: fs.ReadStream | Buffer;
}class CosUtil {private cos;private Bucket: string;private Region: string;private Prefix: string;// 构造函数,初始化配置constructor(config?: CosConfig) {this.Bucket = config?.Bucket || 'mybucket-xxxxxx'; // 存储桶名称this.Region = config?.Region || 'ap-guangzhou'; // 存储桶区域this.Prefix = config?.Prefix || ''; // 路径前缀// 初始化 COS 实例this.cos = new COS({SecretId: 'xxxxxx', // 密钥idSecretKey: 'xxxxxx', // 密钥key});}// 上传文件方法public putObject(param: PutObjectParam): Promise<any> {return new Promise((resolve, reject) => {this.cos.putObject({Bucket: this.Bucket, // 必须Region: this.Region, // 必须Key: param.key, // 必须Body: param.buffer, // 必须},(err: Error, data: any) => {if (err) {reject(err);return;}resolve(data);});});}// 提取图片链接中的图片名称public getName(imageUrl: string): string {// 解析 URLconst parsedUrl = new URL(imageUrl);// 获取路径部分const pathname = parsedUrl.pathname;// 提取文件名const imageName = pathname.split('/').pop() || '';return imageName;}
}export default CosUtil;
  1. 修改上述目录下的index.ts文件:
// ... existing code ...
import CosUtil from './upload_cos';
// ... existing code ...// 修改之前的上传文件代码/*** 上传文件* @param ctx* @param key 文件路径*/async upload(ctx: any) {const { domain } = this.pluginInfo.config;const uploadUtil = new CosUtil();try {const { key } = ctx.fields;if (key &&(key.includes('..') ||key.includes('./') ||key.includes('\\') ||key.includes('//'))) {throw new CoolCommException('非法的key值');}if (_.isEmpty(ctx.files)) {throw new CoolCommException('上传文件为空');}const basePath = pUploadPath();const file = ctx.files[0];const extension = file.filename.split('.').pop();const name =moment().format('YYYYMMDD') + '/' + (key || `${uuid()}.${extension}`);const target = path.join(basePath, name);const dirPath = path.join(basePath, moment().format('YYYYMMDD'));if (!fs.existsSync(dirPath)) {fs.mkdirSync(dirPath);}const data = fs.readFileSync(file.data);fs.writeFileSync(target, data);// 主要变动在这里,key:上传图片的名称(带后缀),buffer:图片的bufferconst cosResult = await uploadUtil.putObject({key: name,buffer: data,});return `https://${cosResult.Location}`;} catch (err) {console.error(err);throw new CoolCommException('上传失败' + err.message);}}

通过以上修改,原来的upload方法及前端组建调用上传方法会得到返回的腾讯云cos存储桶中图片的访问地址,add接口也会把该地址存储到数据库中。

此时admin-node/src/modules/plugin/config.tsdomain参数将会失效

// 基础插件配置hooks: {// 文件上传upload: {// 地址前缀domain: ``,},},

由于是非正式项目,存储桶访问权限设置的是公有读写,不需要做身份验证。如有需要可查看官方文档:设置存储桶访问权限

http://www.dtcms.com/wzjs/16779.html

相关文章:

  • 怎样做招聘网站分析网站建网站建设网站
  • 网站制作公司哪家专业微信营销案例
  • 免费com网站域名注册优化关键词排名
  • 可以先做网站后备案吗万网app下载
  • 建站快车优势青岛网站seo服务
  • 网站建设打造可以搜索任何网站的浏览器
  • 外贸自己做网站淘宝流量助手平台
  • 成都网站建设优化搜索引擎优化中的步骤包括
  • 黄山旅游攻略景点必去常州seo外包公司
  • 商洛市住户和城乡建设局网站信息价上优化seo
  • 网页设计与网站建设从入门到精通关键词优化怎么优化
  • 保定哪家做网站专业搜索引擎优化的内容
  • 聊城手机网站建设软件seo搜索铺文章
  • 做网站要下载的软件湖北seo
  • 对网站设计的建议网络营销的特点不包括
  • 政务公开网站建设意义信息流广告公司排名
  • 一站式做网站开发营销型网站推广方案
  • 江门做网站的公司北京疫情最新消息情况
  • 网站做sem优化2022十大网络营销案例
  • 平台网站怎么做的好免费搜索引擎推广方法有哪些
  • 广元网站设计网络推广的方法你知道几个?
  • 找人做网站需要注意什么问题大众网疫情最新消息
  • 网站建设只有20%的利润广告投放代理商加盟
  • 帝国软件怎么做网站外链是什么意思
  • 360建筑网注册规划师seo优化广告
  • 深圳有哪些大公司总部免费seo教程资源
  • 万象园网站建设与开发上海百度推广客服电话
  • thinkphp怎么做网站一个新手怎么做电商
  • 网站建设企业战略网络销售渠道有哪些
  • 新手网站怎么做站长联盟网上赚钱品牌营销成功案例