`
wutheringsea
  • 浏览: 262569 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Drupal slider模块图片丢失问题

 
阅读更多

最近在用Drupal主题做一个网站,其中这个主题包含了Slider这个图片幻灯的module。同过后台上传图片文件可以在前台动态展现。但发现,只要是重启了系统后,之前上传的图片就自动消失找不到了,重新上传,但下次启动后还是找不到。

为了彻底解决问题,仔细检查了slider模块需要用到的文件及数据库表。最终解决问题步骤如下:

1. 首先在数据库,发现slider上传过程中用到了slider_upload和file_managed两张表记录上传的文件

2. 在sites/all/modules/slider下,编辑slider.module文件:

 

 

/**
 * Form submission handler for slider_form().here we perform both validation and submission
 */
function slider_form_submit($form, &$form_state)
{

	  $var=array('jpg', 'png', 'gif');
	  if(isset($form_state['values']['category']))
	  {

	    $limits = array( 'extensions' => 'jpg png gif', 'file_size' => 200000000);
	    $validators = array('file_validate_extensions' => array($limits['extensions']),);
	    $test =  file_default_scheme() . '://slideshow';   
	    if(!file_prepare_directory($test,'0777'))
	    {
	    	form_set_error('Folder Creation', t('Please make a directory to upload the image.'));
	    }
	     if ( $file = file_save_upload('category', $validators, $test,$replace = FILE_EXISTS_RENAME))
	     {
	       $_file_name=$file->filename;
	       $query = db_insert('slider_upload')->fields(array('title','image_path','path'));
		   $query->values(array(
		        'title' => $form_state['values']['title'],
				'image_path' => $_file_name,
				'path' => $form_state['values']['path'],

			  ));
		   $query->execute();
	       $pieces1 = explode(".", $_file_name);
	       $var1=in_array($pieces1[1],$var);
	       $form_state['redirect'] = 'admin/structure/slider';

	     }
	     else
	     {
		   form_set_error('fileupload', t('Your file should be in valid format.'));
	     }
	  }
}
function slider_preprocess_page(&$variables)
{
		global $base_url;
	    $output='';
	    $output.='<div class="main_view">';
	    $output.='<div class="window">';
	    $output.='<div class="image_reel">';
	    $result= db_query("SELECT title,image_path, path FROM {slider_upload}")->fetchAll();
	    foreach ($result as $row)
	    {
												/**默认是在sites default files slideshow下**/
	      $output.='<a href="'.$base_url.'/node/'.$row->path.'" title="'.$row->title.'"><img src="'.$base_url.'/files/slideshow/'.$row->image_path.'" alt="'.$row->title.'" /></a>';
	    }
	      $output.='</div>';
	      $output.='</div>';
	      $output.='<div class="paging">';

	   for($slide=1;$slide<=count($result);$slide++)
	   {
	     $output.='<a href="#" rel="'.$slide.'" title="'.$slide.'">'.$slide.'</a>';
	   }

	    $output.='</div>';
	    $output.='</div>';
	    $variables['slideshow']=$output;
}

 

 

function slider_form_edit_submit($form, &$form_state)
{
	  $var=array('jpg', 'png', 'gif');
	  if(isset($form_state['values']['category']))
	  {

	    $limits = array( 'extensions' => 'jpg png gif', 'file_size' => 200000000);
	    $validators = array('file_validate_extensions' => array($limits['extensions']),);
	    $test =  file_default_scheme() . '://slideshow';   
	    if(!file_prepare_directory($test,'0777'))
	    {
	    	form_set_error('Folder Creation', t('Please make a directory to upload the image.'));
	    }

	    if($_FILES['files']['name']['category']){
	     if ( $file = file_save_upload('category', $validators, $test,$replace = FILE_EXISTS_RENAME))
	     {
	     	$_file_name=$file->filename;
	     }
	     else
	     {
		   form_set_error('fileupload', t('Your file  should be in valid format.'));
	     }
	    }
	    else
	    {
			$_file_name=$form_state['values']['image_name'];
	    }


	       $query = db_update('slider_upload')
	       ->fields(array('title' => $form_state['values']['title'],'image_path' => $_file_name,'path' => $form_state['values']['path']))
		   ->condition('id',$form_state['values']['id'])
	       ->execute();
	       $form_state['redirect'] = 'admin/structure/slider';
	  }

 

3. 编辑好 上述指定img上传目录和显示目录后,可看到效果。但重启系统后问题依旧。

    注: file_default_scheme()对应的是public

 

4. 折腾了半天,原来是drupal的设置中文件系统上传默认目录一栏未作修改,默认是sites/default/files,这里我修改成files,并且slideshow这个文件夹权限要改成777。修改完成后,重启系统,并未出现图片丢失问题。

 

这里图片丢失的原因,难道是每次启动网站是sites/default/files下面的文件都要清空?

 

 

 

 

分享到:
评论

相关推荐

    drupal7模块开发教程

    ### Drupal 7 模块开发教程 #### 一、引言 Drupal 是一款非常强大的开源内容管理系统(CMS),被广泛应用于构建各种类型的网站。Drupal 的灵活性很大程度上得益于其丰富的模块系统,用户可以通过安装和配置不同的模块...

    Drupal Guestbook模块

    Drupal Guestbook模块是 Drupal 内容管理系统中一个用于创建在线留言板的应用。该模块允许网站访客和注册用户在网站上发布消息,进行互动交流。它为网站增添了一种社区感,提高了用户参与度。 首先,要使用Drupal ...

    drupal 的smtp模块

    Drupal是一个流行的开源内容管理...总之,Drupal的SMTP模块是一个强大的工具,能帮助网站管理员解决邮件发送问题,提高邮件发送的成功率和可靠性。正确配置和使用这个模块,可以确保 Drupal 站点的邮件通信顺畅无阻。

    Drupal模块分类

    因此,“Drupal模块分类”模块应运而生,它为解决这一问题提供了有效的解决方案。 该模块的主要功能包括: 1. **分类管理**:它允许管理员创建自定义的分类体系,将不同的模块归类到相应的类别下。例如,可以将与...

    Drupal CAPTCHA模块配置

    Drupal 是一个强大的开源内容管理系统,它提供了丰富的功能和模块来增强网站的安全性和用户体验。CAPTCHA 模块是 Drupal 中的一个重要组件,用于防止自动化的垃圾信息,如 spam。Spam 通常指的是未经请求的电子邮件...

    Drupal views模块教程

    Drupal Views 模块是 Drupal 内容管理系统中的一个核心扩展,它允许用户自定义网站内容的展示方式,提供了强大的数据筛选、排序和格式化功能。本教程将详细讲解 Views 模块的使用方法,帮助你充分利用这个工具来优化...

    Drupal 7模块开发

    ### Drupal 7模块开发知识点概览 #### 一、Drupal简介 Drupal是一款开源的内容管理系统(CMS),使用PHP语言编写,并且基于MySQL数据库。它能够帮助用户构建和维护各种类型的网站,包括个人博客、企业门户、社区...

    drupal 7.15 统计模块使用(15)

    标题与描述中的关键词“Drupal 7.15 统计模块使用”指向了Drupal系统中一个重要的功能模块——统计模块(statistics)。Drupal是一个开源的内容管理系统(CMS),被广泛用于构建各种类型的网站,从个人博客到大型企业级...

    入门到熟悉Drupal6.x模块开发简明实用教程

    ### Drupal6.x模块开发知识点详解 #### 一、模块入门介绍与目录构建 Drupal作为一款全球知名的开源内容管理系统(CMS),其模块化的设计允许开发者轻松扩展功能,满足各种定制需求。**模块**实质上是一系列函数的...

    drupal菜单模块文档

    Drupal 菜单模块文档 Drupal 是一个功能强大且灵活的内容管理系统,它提供了丰富的模块和 API,允许开发者创建自己的菜单和模块。下面是 Drupal 菜单模块文档的详细介绍。 一、 Drupal 菜单的基本概念 Drupal ...

    Drupal ModuleFilter模块

    Drupal ModuleFilter模块是一款针对Drupal内容管理系统(CMS)的扩展插件,它的主要功能是对系统中的模块进行有效的管理和组织。在Drupal系统中,模块是添加功能、扩展网站能力的基本单元,随着时间的推移,一个...

    Drupal模块功能一览

    Drupal 是一个开源的内容管理系统(CMS),其核心特点之一是模块化的架构。模块是Drupal系统中的扩展功能单位,它们能够增加网站的各种特性,如用户管理、内容发布、社区互动等。Drupal的标准模块随版本一同提供,而...

    Drupal UserDashboard模块

    Drupal UserDashboard 模块; User Dashboard模块可以提供“个人信息面板定制”功能,类似于“用户中心”这样的功能

    Drupal模块开发指南【完整版】Drupal 7 Module 开发指南

    Drupal模块开发是构建在Drupal内容管理系统之上的定制化解决方案。通过模块开发,开发者可以向Drupal添加新功能、改进现有功能,以及集成第三方服务。Drupal模块化的设计让网站的扩展和定制变得非常灵活和强大。 ##...

    drupal中常用的26个模块

    为了方便,包括了drupal中常用的一些第三方模块,其中包括ctools captcha panels date cck webform wysiwyg views rules link imce ubercart等26个

    Drupal常用第三方模块使用手册

    - **概述**:Global Redirect模块帮助处理网站内部重定向问题。 - **特点**: - **重定向管理**:集中管理所有内部重定向。 - **自动检测**:自动检测无效链接并进行重定向。 - **应用场景**: - 管理和维护网站...

    Drupal模块开发中的HOOK使用详解

    Drupal是开源的内容管理系统(CMS),它允许开发者通过模块化的方式扩展功能。在Drupal中,"HOOK"是一个核心概念,它是Drupal框架与模块间通信的重要机制。这篇博客文章深入讲解了Drupal模块开发中如何使用HOOK,将...

    drupal8 ckeditor图片上传插件 拖放图像或粘贴图像的方式自动上传图像到服务器

    快速图像上传-CKEditor Upload Image 把ckeditplug.zip解压到 drupal8目录下的libraries目录 路径如下/...这个模块使用了Drupal Image CKEditor插件的设置和功能来上传图像,可通过拖放或从剪贴板粘贴自动上传图片。

Global site tag (gtag.js) - Google Analytics