私はカスタムモジュールで画像をアップロードしたいと思います。必要に応じて画像を保存し、名前を変更する必要があります。後で、自分のフォームのどこかに、どこにでもイメージを表示したいと思っています。Drupal 7 - 画像をプログラムでアップロード
私の現在のコード:
function my_module_name_new_form()
{
....
$form['icon'] = array
(
'#type' => 'file',
'#title' => t('Icon'),
'#description' => t('Click "Chose File" to select an image to upload.')
);
....
}
提出フックで私が持っている:
// Icon
$filename = $form_state['values']['icon'];
$dest = file_build_uri($filename);
file_save_data('My data', $dest, FILE_EXISTS_RENAME);
何も起こりません...私は何とか作るのいずれかの任意のDrupal 7.xの互換モジュールを見つけることができませんでした人生はここで簡単です。
ソリューション:
//----------------------------
// Icon
//----------------------------
$dest_dir = file_default_scheme() . '://';// Note: file_directory_path() was removed in Drupal 7.x. // $dest_dir contains the destination directory for the file.
$validators = array('file_validate_extensions' => array('jpg png gif'));
//Save file
if ($file = file_save_upload('icon', $validators, $dest_dir))
{
$filename = $file->filename;
$file_content = file_get_contents($dest_dir.$filename); // Fatal error: Cannot access empty property in C:\xampp\htdocs\drupal\modules\custom\achievements\achievements.module on line 446
}
else
{
form_set_error('icon', 'Could not upload file.');
}
// To display the image: // die('<IMG SRC="'.file_create_url($dest_dir.$filename).'"/>');
//----------------------------
私はそれを動作させることはできません。最初の記事で編集した例を見てください。私は何とか入力フィールドからファイルを取得する必要がありますが、1つは間違っているようです。 – Napoleon
file_save_data呼び出しを削除し、$ destはファイルが保存されるディレクトリにする必要があります(たとえば、デフォルトのファイルディレクトリを設定するfile_directory_path()、通常はsites/default/files) – vgardner
file_directory_path D7で私は交換を発見した。編集:それは今働くようです。 – Napoleon