ユーザー(匿名)が画像のURLと画像のタイトルを入力できるフォームをモジュールで作成しました。リンクは、リモートストリームラッパーと同様に、実際の画像として表示する必要があります。つまり、画像は外部ソースから使用する必要があり、ローカルサーバーにダウンロードしないでください。
$node = new stdClass(); // Create a new node object
$node->type = "article"; // Or page, or whatever content type you like
node_object_prepare($node);
$node->title = filter_xss($_GET['title']);
$node->language = en; // Or e.g. 'en' if locale is enabled
$file_path = $_GET['link'];
$file = (object) array(
'uid' => 1,
'uri' => $file_path,
'filemime' => file_get_mimetype($file_path),
'status' => 1,
);
$node->field_image[$node->language][0] = (array)$file;
$node->uid = 1; // UID of the author of the node; or use $node->name
node_save($node);
私はこのコードを持っていて、画像のURLを保存しません。 「リンク」および「タイトル」プロパティをAJAX経由で送信しています。
ファイルフィールドの参照は、file_managedテーブルのfid
列で行われます-ファイルオブジェクトを保存していないため、fid
がなく、フィールドデータを関連付けるものはありません。
ファイルオブジェクトを準備した後、ノードオブジェクトのフィールドに追加する前に、file_save
への呼び出しを追加するだけです。
file_save($file);