2012-10-01 38 views
3

正如问题,我有如何使用FileField浏览django中的服务器端文件?

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

形式,但是这让我浏览客户端计算机上的文件。我想向我展示自己的服务器端文件。我完全了解安全风险。这是我的个人项目,不会被其他任何人使用(只要有人会对我大喊)。它不一定是相同的机制。我只想从表格中获得这个名字。没有什么应该上传或下载。

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

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

回答

2

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

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

如果您正在寻找构建Google Docs/Dropbox类的Web服务,那么django可以帮助您作为Web框架。但是,您需要运行某种本地索引并使用类似PyLucene的方式将所有文件元数据索引添加到数据库,然后将相同文件上载到可下载path onlinestatic服务文件夹。这本身不是Django问题。

+0

我在这台服务器上有应用程序,我希望它在文件上执行一些任务。 Django只是这个操作的GUI。所以我想要做的就是让我选择文件,并将其名称传递给另一个模块。它不能是ssh,因为这个GUI服务其他与这个项目不相关的东西。 – eclipse

+0

你需要在网络上做到这一点? Web浏览器并不擅长访问本地文件内容。尝试使用PyQt或EPD套件来构建桌面应用程序。 –

+0

我很想使用别的东西,但整个项目已经在Django中,并且文件选择是唯一缺失的东西:)而且它也必须是Web应用程序才能提供远程访问。 – eclipse

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 
... 

然后你只是去处理的URL,例如,它显示给你的用户。

+0

对不起,也许我以不好的方式提问。我只想用对话框来浏览文件,就像我可以浏览客户端文件一样。我不想上传/下载任何东西。只有文件的名称。 – eclipse

+0

对不起,也许我还是不明白你的问题。我已经更新了我的答案,看看最后一行。它应该让你知道文件的名字。 – pram

+0

如果你想浏览服务器中的任何文件,@Pratik已经给出了答案。 – pram

相关问题