我有一个文件上传表单
如果有其他验证错误,我该如何保留此文件,以便用户不必再次上传文件?
我在验证功能中尝试了这个但是它不起作用:
function mymodule_someform_validate($form, &$form_state) {
$form_state["values"]["some_field"] = some_value;
}
$ form_state [“values”]变量在我的表单定义函数中不可用 - mymodule_someform($ form,& $ form_state)
有什么想法吗?
答案 0 :(得分:1)
只需使用managed_file
类型,它就会为您完成:
$form['my_file_field'] = array(
'#type' => 'managed_file',
'#title' => 'File',
'#upload_location' => 'public://my-folder/'
);
然后在你的提交处理程序中:
// Load the file via file.fid.
$file = file_load($form_state['values']['my_file_field']);
// Change status to permanent.
$file->status = FILE_STATUS_PERMANENT;
// Save.
file_save($file);
如果验证失败并且用户离开表单,则文件将在几小时后自动删除(因为file_managed
表中没有FILE_STATUS_PERMANENT
的所有文件都是)。如果验证没有失败,则将运行提交处理程序,并且该文件将在系统中标记为永久性。
答案 1 :(得分:0)
可能正在寻找的其他人的管理员表单示例:
function example_admin_form(){
$form = array();
$form['image'] = array(
'#type' => 'managed_file',
'#name' => 'image',
'#title' => t('upload your image here!'),
'#default_value' => variable_get('image', ''),
'#description' => t("Here you can upload an image"),
'#progress_indicator' => 'bar',
'#upload_location' => 'public://my_images/'
);
// Add your submit function to the #submit array
$form['#submit'][] = 'example_admin_form_submit';
return system_settings_form($form);
}
function example_admin_form_submit($form, &$form_state){
// Load the file
$file = file_load($form_state['values']['image']);
// Change status to permanent.
$file->status = FILE_STATUS_PERMANENT;
// Save.
file_save($file);
}