【问题标题】:Drupal 7 forms API: File uploadDrupal 7 表单 API:文件上传
【发布时间】:2012-06-16 12:59:22
【问题描述】:

我一直在关注 Drupal 文档中的表单示例 10: http://api.drupal.org/api/examples/form_example!form_example.module/group/form_example/7

这是我的表单的定义:

function portal_upload_form($form, $form_state) {

    $form['file'] = array(
        '#type' => 'file',
        '#title' => t('Choose a file'),
    );

    $form['document_submit_button'] = array(

      '#type' => 'submit', 
      '#value' => t('upload'), 
    );

    return $form;
}

还有 form_submit 钩子:

function portal_upload_form_submit($form, &$form_state) {

    $file = $form_state['values']['file'];
        // ...

$file 是“空的”,尽管设置了具有 777 权限的输入文件。我错过了一些东西,我自己找不到什么......

谢谢! J.

【问题讨论】:

  • “设置了具有 777 权限的输入文件”是什么意思。这些权限在哪里设置?如果它们在您的本地电脑中,则无关紧要,因为服务器不会直接从您的电脑中读取数据。
  • 嗨,我用于测试的文件在本地文件系统上确实具有 777 权限。鉴于浏览器需要访问文件(只读),至少拥有读取权限感觉很有用:)

标签: forms file drupal file-upload drupal-7


【解决方案1】:

不回答为什么表单不提供文件/url/的问题...但它解决了整个上传问题:

function portal_upload_form_submit($form, &$form_state) {

    $file = $form_state['values']['file'];

    $validators = array();
    $file = file_save_upload('file', $validators, 'public://');

【讨论】:

【解决方案2】:

这里还有一些其他需要考虑的事情:

  1. file_save_upload() 只会验证默认的内容类型列表:jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp

  2. 确保以关联数组格式命名您的第一项,即'#name' => 'files[img_1]',

file_save_upload() documentation,有关我的第二点的信息,请参阅第一条评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多