drupal 7-在自定义模块中移动并显示上传的图像

时间:2012-10-16 10:58:28

标签: php content-management-system drupal-7 drupal-modules

我正在开发一个我想要的自定义模块:

  1. 通过表单上传图片。
  2. 将图像从默认文件夹移动到我想要的文件夹。
  3. 最后以相同的形式(在提交按钮下方)显示图像。
  4. 我通过实现hook_menu和hook_form实现了第一个目标,但是我在过去3天的剩余两个目标中陷入了非常严重的困境。每当我尝试从默认文件夹移动上传的图像时,我会收到“无效位置”的错误消息,对于第三点,我不明白该怎么办?我想当用户选择图像并提交表单时,图像显示在提交按钮下的同一页面上。任何帮助将非常感激。这是我的代码: -

    function create_ad_form($form, &$form_submit)
    {
       ...
    
       $form['image_file'] = array(
         '#title' => t('Upload Banner:'),
         '#type' => 'file'
       );
    
       $form['#attributes']['enctype'] = 'multipart/form-data';
    
       ...
    }
    
    function create_ad_form_submit($form, &$form_state)
    {
        $module=drupal_get_path('module', 'create_ad');
        $validators = array();
    
        $file = file_save_upload('image_file', $validators,"public://",FILE_EXISTS_RENAME);
    
         if ($file)
     {
        $file->status=FILE_STATUS_PERMANENT;
        file_save($file);
    
        $result = file_unmanaged_copy($file, $module, FILE_EXISTS_RENAME);
        if ($result == 1)
        {
    
    
        }
        else
        {
          drupal_set_message('Couldn\'t copy file: '.$file->name);
        }
      }
      else
      {
        form_set_error('create_ad', t("Failed to save the file."));
      }
    }
    

1 个答案:

答案 0 :(得分:0)

我已设法显示图像,但仍然无法将图像移动到任何文件夹,因此将它们放在默认的“public://”目录中。这里讨论了在没有ajax的情况下在同一页面上显示图像:Drupal 7 FAPI- Adding form elements in validate or submit handlers以及此处讨论的ajax:Drupal 7 FAPI - ajax image preview