go - 我可以通过 golang 中的 http.FileServer 提供存储在 Google Cloud Storage 中的文件吗?
问题描述
我开发了一个在 golang 中运行 Web 服务器的小型 Web 应用程序。每个用户都可以登录,查看他们的文档列表(之前上传的)并单击一个项目以查看一个 html 页面,该页面显示文档的一些字段以及一个带有 src 属性的标签
src 属性包含类似“mydocuments/download/123-456-789.pdf”的 url
在服务器端,我通过 http Handler 处理 URL(“mydocuments/download/*”)
mymux.HandleFunc(pat.Get("/mydocuments/download/:docname"), DocDownloadHandler)
在哪里:
- 我检查用户是否有权查看 url 中的文档
- 然后我创建了一个文件服务器,它显然将 url 重新映射到文件存储在服务器文件系统上的文件夹的真实路径
fileServer := http.StripPrefix("/mydocs/download/",http.FileServer(http.Dir("/the-real-path-to-documents-folder/user-specific-folder/)))
当然我提供文件
fileServer.ServeHTTP(w, r)
重要提示:存储文档的目录不是我为网站申请的静态文件目录,而是所有文件在用户上传后结束的目录。
我的问题 当我尝试将代码转换为在 Google Cloud 上也可以工作时,我正在尝试更改代码以便将文件存储在存储桶中(或者,更好地存储在“子目录”中 - 因为它们不正确存在-桶)。
如何修改代码以便通过云存储桶映射真实文档 url?我还可以使用上面的 http.FileServer 技术吗(如果可以,我应该使用什么来代替 http.Dir 来映射存储文档的存储桶“子文件夹”路径)?
我希望我足够清楚地解释我的问题......对于任何不清楚的地方,我提前道歉......
解决方案
推荐阅读
- php - 如何在愿望清单中获取可变产品的父产品的产品类别
- c++ - {fmt} 库:如何使用 RegEx 添加编译时字符串检查?
- mysql - 从 2 个表中获取数据
- php - 如何从数据库中的 wp_usermeta 表中获取值?
- javascript - 为什么这会返回一个数字而不是布尔值
- ios - Firebase 电子邮件链接身份验证无法打开 iOS App Store
- excel - 使用单元格中的一个字母进行excel搜索
- javascript - 如何在本机反应中设计半圆形/椭圆形?
- c++ - 找不到C++版本的系统头文件
- angular - 从 Angular 7 迁移到 8 后,ng build in docker 失败