2016-06-23 17 views
0

私はweb2pyフレームワークを使用しています。 私はSQLFORM経由でtxtファイルをアップロードしました。ファイルは "upload folder"に保存されています。コントローラからこのtxtファイルを読み込む必要があります。default.pyで定義されている関数?web2pyでのファイルアップロード

def readthefile(uploaded_file): 
    file = open(uploaded_file, "rb") 
    file.read() 
    .... 
+0

アンソニーはここでその質問に答えました:http://stackoverflow.com/a/26973208/6479329 – chnselim

答えて

0

アプリケーションディレクトリの結合とアップロードフォルダを使用して、ファイルへのパスを構築できます。

import os 

filepath = os.path.join(request.folder, 'uploads', uploaded_file_name) 
file = open(filepath, "rb") 

request.folder:アプリケーションディレクトリ はこのような何かを行います。たとえば、 アプリケーションが「welcome」の場合、request.folderは絶対パス 「/path/to/welcome」に設定されます。あなたのプログラムでは、この 変数とos.path.join関数を使用して、 にアクセスする必要のあるファイルへのパスを構築する必要があります。

読むrequest.folder

+0

これは動作しますが、まず 'uploaded_file_name'を取得する必要があります。また、フィールドの '.retrieve'メソッドを使うほうが簡単です。これは元のファイル名も返します([this answer](http://stackoverflow.com/a/38012530/440323)参照)。 – Anthony

+0

@Anthonyありがとう! –

0

あなたがするためにSQLFORM提出介して挿入された特定のレコードを照会するための方法が必要ですので、アップロードされたファイルの変換された名前は、データベーステーブルのアップロードフィールドに格納されます格納されているファイルの名前を取得します。ここでは、それはあなたがレコードIDを知っていると仮定するとどのように見えるかです:

stored_filename = db.mytable(record_id).my_upload_field 
original_filename, stream = db.mytable.my_upload_field.retrieve(stored_filename) 
stream.read() 

あなたがアップロードフィールドの.retrieve方法にファイル名を渡すと、それは元のファイル名だけでなく、開いているファイルオブジェクトを含むタプルを返します。 (上記のコードでstreamと呼ばれています)。