【发布时间】:2021-04-15 01:59:30
【问题描述】:
我正在开发一款允许用户录制语音笔记的社交应用。 我为测试所做的方法是在应用程序内的文件夹中包含一些 mp3 文件,例如 ./audios/file.mp3 我需要将用户的 mp3 文件和其他资产(如网络中的图像)存储起来,并能够通过 url 获取它们,而不是在应用程序文件中保存文件。 我有什么选择?
【问题讨论】:
标签: javascript reactjs file file-upload server
我正在开发一款允许用户录制语音笔记的社交应用。 我为测试所做的方法是在应用程序内的文件夹中包含一些 mp3 文件,例如 ./audios/file.mp3 我需要将用户的 mp3 文件和其他资产(如网络中的图像)存储起来,并能够通过 url 获取它们,而不是在应用程序文件中保存文件。 我有什么选择?
【问题讨论】:
标签: javascript reactjs file file-upload server
这里的问题是,您希望将资产作为 blob 存储在数据库中,还是作为文件存储在文件系统中。 Here's a research paper which discusses this.
将资产存储为文件并不是一个坏主意。您可以做的是使用 UUIDs 命名文件并将 UUID 名称存储在数据库中。
然后,要检索资产,在服务器端,首先查询数据库以获取文件名并使用文件名检索资产。
对于节点,包uuid应该是有用的。
【讨论】:
假设您使用 create-react-app 引导反应应用程序。
将所有资产存储在public 目录中。您可以在公共目录中创建一个assets 文件夹,并将所有资产存储在其中。
在您的应用程序中,可以使用 PUBLIC_URL 环境变量指向公共目录。
使用process.env.PUBLIC_URL 检索公共目录并使用${process.env.PUBLIC_URL}/assets 指向资产目录。
希望你能理解。
【讨论】: