既存のサーバーファイルをファイルフィールドに添付


7

Drupal 7では、ファイルフィールドに既存のファイルパスをどのように設定しますか?表示される唯一のオプションは、ファイルを再度アップロードすることです。

Drupal 6では、FileField Sourcesがこれを行うようです。

DOES FileFieldにパスまたはIMCEファイルフィールドと一緒には、サーバーのファイルの割り当てを許可しますか?
プログラムでファイルフィールドを管理するAPIはありますか?

編集
これすべてメディアモジュールで実行できることを発見しました。mediaelementもインストールされています。しかし、それは完全に直感的ではないので、ここに私が取った手順があります:

メディアライブラリへのインポート: /admin/content/media/import

mediafile assetフィールドを作成します。これにより、ライブラリからアタッチできます。

表示形式(オーディオの例)は、/admin/config/media/types/manage/audio/display/「大」、「小」、「プレビュー」などのみを提供するコンテンツタイプ「管理表示」ではなく、にあります。

回答:



3

IMCEIMCE for FileField(D7)と組み合わせて選択しました。これは、クライアントがFTPでアップロードされたファイルの迅速かつ完全な選択を必要としていたためです。これにより、ノードごとにファイルを複製する必要がありません。

私が見る限り、Filefield Sourcesは現在、常に添付ファイルを複製しています。メディアが提供するインポーターもそれを行います。



2

filefiledへのファイルの添付をお手伝いします。ただし、ファイルフィールドに添付するファイルを取得するためのオートコンプリートウィジェットを実現することは試みていません。

を使用file_get_contents()して添付するファイルを取得し、file_save_dataを使用してDrupalに取り込むことができます。問題は、後でノードに添付できるように、追加したファイルのステータスを変更する必要があることです。そうしないと、検証エラーが発生します。

$file = file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAME);

db_update('file_managed')
  ->fields(array('status' => 0))
  ->condition('fid', $file->fid, '=')
  ->execute();

フォームが送信されると、管理対象ファイルのステータスに添付するファイルのfilefieldの値としてfidが自動的に更新されます。

詳細については、http://api.drupal.org/api/drupal/includes--file.inc/group/file/7ご覧ください


これは非常に有望に見えます。2つの簡単な質問:1)後でノードに接続するには、機能する$node = node_load($nid); $node->field_myfilefield[$node->language][0] = $file; node_save($node); 必要がありますか?2)1ノードに接続した後、ステータスを元に戻す必要があると思いますか?それともnode_save私のためにこれをしますか?ありがとう!
brian_d

ノードの保存に関する想定は正しいです。ただし、これを行うと、ステータスが自動的に1に戻るため、手動で行うことを心配する必要はありません。ステータスを1に設定せずに管理対象ファイルテーブルにファイルを追加する機能がなかったため、しばらくの間これに苦労しました。別のサーバーからファイルをダウンロードしてノードにアタッチするバッチ操作で使用しました私のDrupalサイトで。バッチを使用している場合は使用できませんfile_get_contents()が、失敗します。使用する必要がありますdrupal_http_request()
Jepedo

2番目の考えでは、node_saveがステータスを1に変更するかどうかわかりません。この例では、drupal_form_submit()を使用して、node_saveが検証を通過したことを確認しました。その場合、ステータスは自動的に1に更新されました。場合によっては、手動で更新する必要があります。node_save()は同じように動作する可能性があります。
Jepedo

1

File as Nodeアプローチにいつでも進み、ノード参照フィールド+ カスタムフォーマッター(ノードをファイルとしてレンダリングするため)を使用してこれを行うことができます。これにより、Fileノードを更新し、そのFileノードのすべての参照を更新することができます。全面的に。

D6では、ノード関係を使用してファイルライブラリとフォーマッタ4ノード参照フィールドを提供し、ノードを使用可能な任意のFileFieldフォーマッタとしてフォーマットすることもできます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.