如何使用FileField浏览django中的服务器端文件?

时间:2012-10-01 16:48:16

标签: python django

正如问题所示,我的表格是

file = forms.FileFIeld(widget = forms.FIleInput())

但这允许我浏览客户端计算机上的文件。我想告诉我自己的服务器端文件。我完全了解安全风险。这是我的个人项目,不会被其他人使用(以防万一有人会对我大喊大叫)。它不一定只是相同的机制。我只想从表格中获取此名称。不得上传或下载任何内容。

这将作为另一个服务器应用程序的文件选择。

如果无法浏览整台计算机,如何指定可以存储文件的目录以供进一步浏览?

2 个答案:

答案 0 :(得分:2)

如果要构建一个系统来远程访问计算机上的文件,可以使用ftp或ssh来完成。

如果您需要访问特定目录中的文件,可以将它们放在django的static部分并拥有django serve you static content。然而,这不是django的预期设计,您也可以使用Apache为http服务器提供文件。

如果您希望构建一个google docs / dropbox类型的Web服务,那么django可以帮助您作为Web框架。但是,您需要运行某种本地索引并使用PyLucene等内容将所有文件元数据索引添加到数据库,然后将相同的文件上载到可下载的path onlinestatic服务文件夹。这本身不是Django问题。

答案 1 :(得分:0)

您可以通过模型浏览存储的文件。

假设您的模型声明为此

import os
class Document(models.Model):
    name = models.CharField(max_length=64)
    doc_file = models.FileField(upload_to='documents')

您可以像任何其他字段一样获取文件

names = []
# To browse your saved file, get the containing models
documents = Document.objects.all()
for doc in documents:
    # This is how you get the URL of the file field
    url = doc.doc_file.url
    # If you need the path of the stored file (in the server)
    doc_path = doc.doc_file.path
    # get name and size of the file
    name, size = doc.doc_file.name.split(os.path.sep)[-1], doc.doc_file.size
    names.append(name)
#process your file names
...

然后您只需处理该网址,例如,将其显示给您的用户。