4

問題のように、私はフォームを持っています

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

しかし、これにより、クライアントコンピューター上のファイルを参照できます。自分のサーバー側ファイルを見せたいのですが。私はセキュリティリスクを十分に認識しています。これは私の個人的なプロジェクトであり、他の人が使用することはありません(誰かが私に叫ぶ場合に備えて)。同じメカニズムである必要はありません。この名前はフォームから取得したいだけです。何もアップロードまたはダウンロードしてはなりません。

これは、別のサーバーアプリのファイル選択として機能します。

コンピュータ全体を参照できない場合、さらに参照するためにファイルを保存できるディレクトリを指定するにはどうすればよいですか?

4

2 に答える 2

2

コンピューター上のファイルにリモートでアクセスするシステムを構築する場合は、ftpまたはsshを使用して行うことができます。

特定のディレクトリ内のファイルにアクセスする必要がある場合は、それらstaticをdjangoの一部に配置して、djangoに静的コンテンツを提供させることができます。ただし、これはdjangoの意図された設計ではなく、Apacheを使用してhttpサーバーのファイルを提供することもできます。

google docs / dropboxのようなWebサービスの構築を検討している場合は、djangoがWebフレームワークとして役立ちます。ただし、ある種のローカルインデックスを実行し、PyLuceneなどを使用してすべてのファイルメタデータインデックスをデータベースに追加してから、同じファイルをオンラインまたはstaticサーブフォルダーのダウンロード可能なパスにアップロードする必要があります。これ自体はDjangoの問題ではありません。

于 2012-10-01T17:21:07.990 に答える
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を処理します。たとえば、URLをユーザーに表示します。

于 2012-10-01T16:59:42.460 に答える