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

自网站EXCel数据导入怎么做腾讯第三季度营收448亿元

自网站EXCel数据导入怎么做,腾讯第三季度营收448亿元,做网站的怎么办理营业执照,研究院网站建设方案简介 通常情况下,应用程序上传文件到AWS S3,会使用aws-sdk,但是有些情况下,客户端应用会有安装限制,比如不能安装aws-sdk,此时我们就需要通过其他方式实现文件上传与下载。 这里我们提供一个服务端&#…

简介

通常情况下,应用程序上传文件到AWS S3,会使用aws-sdk,但是有些情况下,客户端应用会有安装限制,比如不能安装aws-sdk,此时我们就需要通过其他方式实现文件上传与下载。

这里我们提供一个服务端,在服务端安装aws-sdk。对于文件上传,服务端通过aws-sdk生成一个upload policy,然后将这个upload policy返回给客户端,客户端通过这个upload policy上传文件。对于文件下载,服务端通过aws-sdk生成一个presigned url,然后将这个presigned url返回给客户端,客户端通过这个presigned url下载文件。

文件上传

服务端安装aws-sdk

npm install @aws-sdk/client-s3 
npm install @aws-sdk/s3-request-presigner
npm install @aws-sdk/s3-presigned-post

服务端生成upload policy

在服务端的 controller 里添加一个路由产生并返回 upload policy

import { S3Client } from "@aws-sdk/client-s3";
import { createPresignedPost } from '@aws-sdk/s3-presigned-post';
import { Conditions } from "@aws-sdk/s3-presigned-post/dist-types/types";...app.get("/s3/getUploadPolicy", async (req: Request, res: Response) => {const bucket = req.query.bucket?.toString();const key = req.query.key?.toString();const id = req.query.id?.toString();if (bucket && key) {const fields = {'x-amz-meta-uuid': '' + id};const conditions: Conditions[] = [['starts-with', '$key', key],['content-length-range', 16, 10 * 1024 * 1024],['starts-with', '$Content-Type', '']];const params = {Bucket: bucket,Key: key,Conditions: conditions,Fields: fields,Expires: 10 * 60 * 60,};const client = new S3Client();const policy = await createPresignedPost(client, params);res.json({ policy: policy });} else {res.json({ error: 'error' });}
});

客户端上传文件

客户端上传需要使用form-data库做表单提交,因此需要先安装form-data库

npm install form-data

客户端上传代码如下:

import * as FormData from 'form-data';
import { createReadStream } from "fs";async function testForUpload(bucket: string, key: string, id: string, file: string) {// http://localhost:3000/s3/getUploadPolicy?bucket=mybucket&key=abc.tar.gz&uuid=12345const url = `http://localhost:3000/s3/getUploadPolicy?bucket=${bucket}&key=${key}&uuid=${id}`;const response = await fetch(url);const policy = await response.json();console.log(policy);const form = new FormData();form.append('key', policy.fields.key);form.append('Content-Type', 'application/gzip');form.append('X-Amz-Credential', policy.fields['X-Amz-Credential']);form.append('X-Amz-Algorithm', policy.fields['X-Amz-Algorithm']);form.append('X-Amz-Date', policy.fields['X-Amz-Date']);form.append('Policy', policy.fields.Policy);form.append('X-Amz-Signature', policy.fields['X-Amz-Signature']);form.append('x-amz-meta-uuid', policy.fields['x-amz-meta-uuid']);form.append('file', createReadStream(file));await form.submit(policy.url);
}
// testForUpload('mybucket', 'abc.tar.gz', '12345', '/Volumes/mydisk/test/abc.tar.gz');
  • 客户端代码首先调用服务端接口获取upload policy,请求的时候传递bucket、key和id,服务端会根据这些参数生成upload policy;
  • 然后客户端使用form-data库生成一个form,将参数、policy和文件添加到form中,然后将form提交到服务端返回的url;

文件下载

服务端安装aws-sdk

npm install @aws-sdk/client-s3 
npm install @aws-sdk/s3-request-presigner
npm install @aws-sdk/s3-presigned-post

服务端生成签名的文件下载链接

在服务端的 controller 里添加一个路由产生并返回签名的文件访问url

import {S3Client,GetObjectCommand,
} from "@aws-sdk/client-s3";
import {getSignedUrl} from '@aws-sdk/s3-request-presigner';...app.get("/s3/getDownloadUrl", async (req: Request, res: Response) => {const bucket = req.query.bucket?.toString();const key = req.query.key?.toString();if (bucket && key) {const client = new S3Client();const url = await getSignedUrl(client,new GetObjectCommand({Bucket: bucket,Key: key,}),{expiresIn: 10 * 60 * 60,});res.json({ url: url });} else {res.json({ error: 'error' });}
});

然后客户端请求此链接,并添加bucket和key参数,比如http://localhost:3000/s3/getDownloadUrl?bucket=mybucket&key=abc.tar.gz,即可获取签名的文件下载链接。

http://www.hkea.cn/news/863296/

相关文章:

  • 网站建设流程 文档东莞seo技术
  • 公众号开发网站建设合同信息流广告投放流程
  • 长清网站建设费用友情链接出售平台
  • 先做网站再付款百度推广的广告真实可信吗
  • 湖南省人民政府一事一办企业网站seo排名优化
  • 深圳招聘网官方网站网站搜索引擎优化
  • 怎么知道一个网站是谁做的中国最大的企业培训公司
  • m2c是什么意思南昌百度seo
  • 专业做羽绒服的服装网站域名注册网
  • 公司网站建设需要显示什么软件世界球队最新排名
  • 做微信平台图片网站有没有免费的广告平台
  • 渭南网站建设风尚网络站长工具seo词语排名
  • 广告传媒网站模板免费网站推广方式
  • 如何用api方式做网站域名批量查询工具
  • wordpress 网易云跟帖优化合作平台
  • 建设党建网站联盟青岛网站推广公司
  • 石湾网站建设湘潭关键词优化服务
  • 淘宝优惠券怎么做网站网络服务提供商
  • 哪里有网站建设电话查排名官网
  • 做网站需要准备的工具网络营销方案模板
  • 科技未来网站建设百度推广开户公司
  • 十度网站建设保定网站推广公司
  • php可以做视频网站有哪些软文推广渠道主要有
  • 成都网站建设桔子科技淘宝付费推广有几种方式
  • 福田的网站建设公司网络营销成功案例ppt免费
  • 网站建设英文专业术语百度推广网址
  • 做网站之前需要准备什么企业网络营销策划案
  • dreamweaver动态网站开发与设计教程内容怎么在百度上面打广告
  • 济南网站搜索优化深圳网络推广招聘
  • 网站 色彩武汉it培训机构排名前十