javascript 文件阅读器 URL 很荒谬,我是否应该将所有这些内容存储在数据库中?

问题描述 投票:0回答:1

我想在用户购买图像后向他们提供下载网址,这是我的代码:

  const get_file_url = (file: File) => {
    return new Promise((acc, err) => {
      const reader = new FileReader()
      reader.onload = (event) => {
        acc(event.target?.result)
      }
      reader.onerror = (error) => {
        err(error)
      }
      reader.readAsDataURL(file)
    })
  }

你只需向它传递一个文件,它就会创建正确的 URL,不,URL 很大(mK4EFLV700MChmzwBsU+9yyY8n86Lu'... 36363 个字符)每个图像大约 35k 个字符,我不认为我应该将所有内容存储在一个数据库,我什至不认为我可以,如果我想要我该怎么办?

预期:网址更短

javascript reactjs file filereader
1个回答
0
投票

readAsDataURL 函数在其返回的 URL 中包含以 Base 64 编码的文件数据: https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL

正如您所注意到的,这可能不是您想要的。如何向用户提供文件的 URL 将取决于文件实际使用的存储机制:文件系统、数据库等。

get_file_url
的参数即
(file: File)
是否已可通过 URL 访问?或者它是否存储在非公开访问的位置?

无论是在文件系统上一个不起眼但公共的位置、非公共位置还是数据库中,您都可以在一个简短的参数化 URL 处编写受保护的服务器路由,将某些哈希 ID 映射到文件路径/数据库 BLOB 。然后,在通过哈希或查询授权和查找文件路径后,将该文件作为具有适当标头的 HTTP 响应提供。

© www.soinside.com 2019 - 2024. All rights reserved.