2012-10-01 40 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

相關問題