You are here

29 managed_file(受管理的文件)

admin 的头像
Submitted by admin on 星期五, 2015-06-19 09:45

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

    提供一个完整的ajax控件,用来上传文件并将其保存到{file_managed}表中。它包含一组表单元素,有两个'#submit',一个用来上传,一个用于删除;一个'#file' 元素;多个'#hidden''#markup'元素,用于处理进度条和显示已上传的文件。

 

    注意:新上传的文件,如果默认状态为0,那么它们会当作临时文件,每隔6个小时被清空一次。如果你的模块用到这个元素了,那么你需要自己负责修改$file对象的状态,将其改为FILE_STATUS_PERMANENT,并保存到数据库中。下面是参考代码:

 

//通过file.fid加载文件。
$file = file_load($form_state['values']['my_file_field']);

//将状态修改为持久化。
$file->status = FILE_STATUS_PERMANENT;

//保存。
file_save($file);

 

    如果点击了删除按钮,将会把该字段的值设置为0,你的模块还需要使用file_delete()将文件从files表和文件系统中实际的删除。

 

    它包含多个非标准的表单元素属性:#progress_indicator,可选值有'none''bar''throbber',默认为'throbber'#progress_message,文件正被上传时的进度信息,默认为NULL#upload_validators,一组回调函数,用来验证上传的文件;#upload_location ,上传文件应被存储的位置,例如'public://files/my_files'

 

示例代码,来自(image.field.inc):

 

$form['default_image'] = array(

    '#title' => t('Default image'),

    '#type' => 'managed_file',

    '#description' => t('If no image is uploaded, this image will be shown on display.'),

    '#default_value' => $field['settings']['default_image'],

    '#upload_location' => 'public://default_images/',

  );

 

常用属性: #access、 #after_build、 #array_parents、 #attached、 #attributes、 #description、 #disabled、 #element_validate、 #parents、 #post_render、 #prefix、 #pre_render、 #process、 #states、 #suffix、 #theme、 #theme_wrappers、 #title、 #tree、 #weight


Drupal版本: