fields.binaryを使用する
OpenERPでバイナリファイルをクライアント側に返す一般的な方法の1つは、fields.binary
列を使用することです。セッションの期間中のみ存続するTransientModel
オブジェクト(以前は、インタラクティブウィザードの作成に使用されていました)に配置できます。バイナリフィールド値は、前の操作の結果として設定することも、列にシミュレートosv_memory
させることでオンザフライで計算することもできます。fields.function
この例は、CVS / PO /TGZファイルを生成する翻訳エクスポートウィザードなどの公式アドオンにあります。1つの落とし穴は、過去のRPC転送の理由から、バイナリ値をbase64でエンコードする必要があることです。
静的ダウンロードURLを使用する
OpenERP 6.1以降、サーバーファイルシステムからファイルを直接ダウンロードすることもできます。fields.char
モジュールをルートとする相対URLのように、ファイルのURLを値に入れるのと同じくらい簡単です/module/path/to/file
。次に、を使用して、このフィールドをリンクとしてフォームビューに追加しwidget="url"
ます。これが使用される1つのケースは、メールクライアントプラグインの構成ウィザードです。
これは、モジュールの一部である静的ファイルには適していますが、一時的であってもモジュールのファイルシステムに保存されるべきではないため、ユーザー操作の結果としてシステムによって生成されるファイルには適していません。適切に保護されたインストールでは、OpenERPサーバープロセスには、モジュールソースが配置されているファイルシステムに書き込む権利さえない場合があります。
独自のWebコントローラーを作成するなど、他のオプションもありますが、ほとんどの場合、上記のソリューションで十分に機能するはずです。