首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drupal 7保留文件上传

Drupal 7保留文件上传
EN

Stack Overflow用户
提问于 2011-10-12 19:27:57
回答 2查看 4K关注 0票数 1

我有一张文件上传表

当存在其他验证错误时,我如何保留此文件,以便用户不必再次上传该文件?

我在我的验证函数中尝试了一下,但它不起作用:

代码语言:javascript
复制
function mymodule_someform_validate($form, &$form_state) {
  $form_state["values"]["some_field"] = some_value;
}

我的表单定义函数- mymodule_someform($form,&$form_state)中没有$form_state"values“变量

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-12 19:34:08

只需使用managed_file类型,它将为您完成此操作:

代码语言:javascript
复制
$form['my_file_field'] = array(
  '#type' => 'managed_file',
  '#title' => 'File',
  '#upload_location' => 'public://my-folder/'
);

然后在您的提交处理程序中:

代码语言:javascript
复制
// 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
EN

Stack Overflow用户

发布于 2013-10-19 23:02:36

管理员表单示例,供可能正在查找的其他人使用:

代码语言:javascript
复制
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);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7739345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档