有没有办法告诉浏览器将文件下载为与磁盘上存在的名称不同的名称?

时间:2014-02-16 03:48:36

标签: python amazon-s3 flask

我正在尝试使用Flask提供一些用户上传的文件,并且有一个奇怪的问题,或者至少有一个我无法通过搜索找到任何解决方案。我需要文件在上传后保留其原始文件名,因此当用户下载文件时它们将具有相同的名称。最初我根本不想处理数据库,并通过将每个文件存储在随机命名的文件夹中,并指向该位置进行下载来解决文件名冲突的问题。然而,之后出现的东西要求我使用数据库存储有关文件的一些信息,但我仍然保留了处理文件名冲突的旧方法。我现在有一个我的文件的模型,存储名称就像添加另一个字段一样简单,所以这不应该是一个大问题。在我编写了文章后,我决定使用Amazon S3来存储文件,这非常愚蠢。显然S3并不像传统文件系统那样处理文件夹,我不想处理确定如何在S3上以编程方式创建文件夹的确定复杂的任务,回想起来,这是一种愚蠢的处理方式。首先是这个问题,当像SQLalchemy这样的东西存在时,会使数据库变得简单。无论如何,我需要一种方法来存储s3上具有相同名称的多个文件,而不使用文件夹。我想在上传文件后用随机UUID重命名文件,然后下载文件时(用户访问页面并按下下载按钮,所以我不需要在URL中输入文件名),告诉浏览器保存该文件作为从数据库中检索的原始名称。有没有办法在Python w / Flask中实现这个?当它部署时,我打算让Web服务器处理文件服务,是否可以使用服务器执行类似的操作?还是有更聪明的解决方案?

1 个答案:

答案 0 :(得分:0)

我很蠢。在Flask API文档中,它表示如果它与文件系统中的文件名不同,则可以在attachment_filename中包含参数send_from_directory