Django如何在FileField中打开文件

3

我需要打开一个保存在FileField中的文件,创建一个包含该文件内容的列表并将其传递给模板。我该如何打开该文件?我尝试使用 with open(stocklist.csv_file.url, "wb"),但出现了“文件未找到”的错误。如果我这样做:

csv_file = stocklist.csv_file.open(mode="rb")

csv_fileNone,但是有一个文件。如果我打印print("stocklist.csv_file.url: %s" % stocklist.csv_file.url),我会得到:

stocklist.csv_file: https://d391vo1.cloudfront.net/csv_pricechart/...ss7.csv

如果我进入管理员界面,我可以下载这个文件。那么,如何打开保存在FileField中的文件呢?


你的存储后端是什么? - Gagik Sukiasyan
这是一个 AWS 存储桶。 - Alejandro Veintimilla
1个回答

7
.open()方法打开文件光标,但不返回它,因为这取决于您的存储(文件系统、S3、FTP等)。一旦打开,您可以使用.read()迭代文件内容
stocklist.csv_file.open(mode="rb")
content = stocklist.csv_file.read()
stocklist.csv_file.close()

如果您想专门使用文件描述符,则可以使用存储功能:

from django.core.files.storage import DefaultStorage
storage = DefaultStorage()
f = storage.open(stocklist.csv_file.name, mode='rb')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接