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

建立一个同城网站要怎么做怎么建网站平台卖东西

建立一个同城网站要怎么做,怎么建网站平台卖东西,买购网中国10大品牌网,网站关键词优化到首页后怎么做Minio预签名URL自定义响应文件名之Minio源码改造 需求说明Minio源码改造一、环境准备二、下载Minio源代码三、修改源代码1.修改cmd目录下的api-router.go这个代码文件2.将filename参数值设置到响应头4.修改验证签名时是否需要带入filename参数验证 四、大功告成#xff0c;编译… Minio预签名URL自定义响应文件名之Minio源码改造 需求说明Minio源码改造一、环境准备二、下载Minio源代码三、修改源代码1.修改cmd目录下的api-router.go这个代码文件2.将filename参数值设置到响应头4.修改验证签名时是否需要带入filename参数验证 四、大功告成编译go代码生成可执行文件本机运行打包命令ARM打包命令AMD打包命令 五、使用预签名URL下载文件测试 需求说明 用户上传文件到Minio时一般存储在Minio中的对象名称都是后端以UUID或者其他随机或非随机方案生成的唯一标识做为文件名这个对象名称一般都不会是用户上传时的原文件名称。 在用户下载时想让文件流不通过后端服务器而是用户直接申请并使用某个要下载对象的Minio预签名的url直接从Minio所部署的服务器下载该文件。 但是浏览器通过预签名的url下载文件时由于无法自定义Minio下载文件的请求响应头中的文件名称所以在浏览器下载时保存的文件名是以对象名称进行保存的那么这个文件名是对用户感知等都是不友好的。 所以需要根据预签名url下载文件我这里是用GET请求中的filename参数把响应头的Content-Disposition内容上指定文件名称。 注本方案是修改Minio源代码实现该功能因为Minio好像没有实现这个功能 Minio源码改造 一、环境准备 这里大家自己百度查询相关教程 Go语言环境并设置好Go的依赖下载代理 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.io,directGoLand编辑器当然用别的也行 我使用的go版本go version go1.21.0 linux/amd64 二、下载Minio源代码 使用git下载 git clone https://github.com/minio/minio.git三、修改源代码 1.修改cmd目录下的api-router.go这个代码文件 搜索改文件内容GetObjectHandler 进入api.GetObjectHandler这个handler查看代码在这个函数前面加上一个自定义的函数GetUrlArgs这个函数的功能是获取GET请求url中的某个参数值 /** 获取URL的get参数 */ func GetUrlArgs(r *http.Request, name string) string {var arg stringvalues : r.URL.Query()arg values.Get(name)return arg }2.将filename参数值设置到响应头 在这个函数里面添加这段代码作用是将请求url中的filename参数值设置到响应头的Content-Disposition中 // 将filename参数值添加到响应头做为响应名var filename string GetUrlArgs(r, filename)if filename ! {// 该写法可以解决中文文件名乱码问题w.Header().Set(Content-Disposition, fmt.Sprintf(attachment; filename*UTF-8%s, url.QueryEscape(filename)))}4.修改验证签名时是否需要带入filename参数验证 如果你在获取预签名url时就携带了filename参数就不用做这一步了那么这个预签名url的任何参数值都是不能被更改的包括filename。 例如我的java minio客户端获取预签名url代码: MapString, String query new HashMap(2, 1);query.put(filename, responseFileName);GetPresignedObjectUrlArgs args GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(objectName) // 对象名称.expiry(10, TimeUnit.SECONDS) // 该url签名10秒过期.method(Method.GET) // 该url允许的请求方式.extraQueryParams(query) // 把filename加在查询字符串上.build();// 创建预签名urlString preSignedObjectUrl minioClient.getPresignedObjectUrl(args);如果你在获取预签名url时根本就没有携带上filename进行url预签名而是想让前端或者请求者在url上加上filenamexxx这个参数文件名可以随便由请求者设置那么就需要修改Minio源码中的验证签名操作让filename这个参数不参与到验证签名中。 例如这是java minio客户端不带filename参数创建预签名url的代码 GetPresignedObjectUrlArgs args GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(objectName) // 对象名称.expiry(10, TimeUnit.SECONDS) // 该url签名10秒过期.method(Method.GET) // 该url允许的请求方式.build();// 创建预签名urlString preSignedObjectUrl minioClient.getPresignedObjectUrl(args);修改Minio源码不让filename参与到验证签名的操作步骤 代码文件cmd/signature-v4.go 搜索函数doesPresignedSignatureMatch 在该函数的这个循环中修改这个循环判断条件中加入参数k不是filename的条件即可加入的是图中红色方框这里的代码 //Add missing query parameters if any provided in the request URLfor k, v : range req.Form {if !defaultSigParams.Contains(k) k ! filename {query[k] v}}四、大功告成编译go代码生成可执行文件 按需执行以下命令下载好相关依赖之后就会编译生成一个可执行文件minio当然这个可执行文件名可以在命令中修改打包之后这个可执行文件就是可以和官方下载的可执行文件一样运行了依旧按照官方的文档使用。 本机运行打包命令 go build main.goARM打包命令 # CGO_ENABLED0 GOOSlinux GOARCHarm64 go build -o 可执行文件名 main.go CGO_ENABLED0 GOOSlinux GOARCHarm64 go build -o minio main.goAMD打包命令 # CGO_ENABLED0 GOOSlinux GOARCHamd64 go build -o 可执行文件名 main.go CGO_ENABLED0 GOOSlinux GOARCHamd64 go build -o minio main.go五、使用预签名URL下载文件测试 我获取预签名url是设置的filename是a.txt存储在Minio中是一大长串xxxxxx.txt浏览器保存的文件名也是a.txt。如果是中文名的话会自动进行编码后响应浏览器能自动转码为中文文件名进行保存。
http://wiki.neutronadmin.com/news/31396/

相关文章:

  • 全面的基础微网站开发flash网站作品欣赏
  • 出口退税在哪个网站做什么网站可以免费做试卷
  • 网站搜索优化方法河北建设官方网站
  • 英文淘宝网站建设做网站快速排名
  • iis 网站访问权限设置黄金网站app免费视频下载
  • 镇江建设银行网站怎么做让自己的网站
  • 正在建设中的网站百度官网首页
  • 电脑路由器做网站服务器吗诸暨网站建设
  • 深圳网站建设公司平台承德网站建设案例
  • 做爰全过程免费网站官网设计需要多少钱
  • wordpress 教程类主题关键词优化的作用
  • 南昌专业的企业网站开发公司企业网站建设最新技术
  • 做淘宝要网站?项目网站开发
  • 做的时间长的网站制作公司哪家好怎样推广海外网站
  • 中国建设银行企业信息门户网站企业为什么要做流程
  • 长春建设厅网站有什么网站可以做宣传
  • 玩网页游戏的网站佛山建网站公司
  • 镇平微网站建设上海网站排名seo公司哪家好
  • 网络推广理论做网站好不好如何查询logo是否已经被注册
  • 泗县住房和城乡建设局网站淄博做网站公司有哪些
  • 做自己的网站可以赚钱吗如何做网站 知乎
  • 免费建站的网站开发过什么软件
  • 北京环保网站建设手机网页设计制作网站
  • 网站建设一个人手机更新wordpress
  • 建设网站怎么入账中文网站什么意思
  • 网站开发的广告秦皇岛网站制作 微商城建设
  • 深圳网站建设公司收费标准做公司网站的费用
  • 镇海网站建设建设田达摩托车官方网站
  • 网站没完成可以备案么广告设计就业好找吗
  • 网站建设市场占有率望野诗