Tag Archives: 附件

windows 2003 IIS环境 wordpress 2.9.2 上传附件中文名乱码问题及解决方案

windows 2003 IIS环境 wordpress 2.9.2 上传附件中文名乱码问题及解决方案 | HJin.me - 黄金一博

引言

给老师做网站,用wordpress来做。最后在测试阶段,发现附件上传后,服务器上面的中文文件名乱码,系统生成的超链接无法访问到附件,同时在上传完成时,页面上附件名显示也不正确。

原因分析

很容易想到,是编码问题。服务器系统是中文版windows 2003,IIS的版本不记得了。应该是对utf-8的文件名不支持。

read more »

Sablog-x 2.0 安装给附件的音乐播放器

Sablog-x 论坛里面以前讲过这个用播放器播放附件里面的mp3音乐的方法,我这里写一下 Sablog-x 2.0 的添加方法。

首先,解决上传保留文件后缀名的问题

找到adminuploadfiles.php文件,大概在66行,将

  1. if (!in_array($attach["ext"], array("gif""jpg""jpeg""png"))) { 

替换成

  1. if (!in_array($attach["ext"], array("gif""jpg""jpeg""png","mp3"))) { 

然后为文章添加上播放器

找到modulesshow.php文件,大概在118行,在

  1. else { 
  2. // 如果非图片文件 
  3. $a_size = sizecount($attach["filesize"]); 
  4. $article["file"][$attach["attachmentid"]]=array($attach["attachmentid"],$attach["filename"] ,$a_size,$attach["downloads"]); 

的前面添加上几行代码,如下

  1. elseif ($a_ext == "mp3"){ 
  2. // 是mp3 
  3. $a_size = sizecount($attach["filesize"]);    
  4. $article["mp3"][$attach["attachmentid"]]=array($attach["attachmentid"] ,$attach["filename"],$a_path,$a_size,$attach["downloads"]); 

然后打开你的模板文件夹,找到其中的show.php文件,在其中适当的位置,或者说你想放置MP3播放器的位置添加上以下代码

  1. <!--{if $article["mp3"]}-->  
  2. <!--{loop $article["mp3"] $mp3}-->  
  3. <div class="attach">歌曲名: $mp3[1]<br /><embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="$options[url]images/dewplayer.swf?son={$options[url]}attachment.php?id={$mp3[0]}&&autoplay=1&&autoreplay=1" width="200" height="20" type="application/x-shockwave-flash" autostart="true"> /*这里重新修改过 */ 
  4. </div>  
  5. <!--{/loop}-->  
  6. <!--{/if}-->  

如果你需要在文章列表那里显示mp3播放器,请打开modulesarticle.php,在190行附近的

  1. else { 
  2. // 如果非图片文件 

前面加上几行代码,如下

  1. elseif ($a_ext == "mp3"){ 
  2.     // 是mp3 
  3.     $a_size = sizecount($attach["filesize"]);    
  4.     $article["mp3"][$attach["attachmentid"]]=array($attach["attachmentid"],$attach["filename"],$a_path,$a_size,$attach["downloads"]); 

然后继续往下,大概210行的位置,找到

  1. $article["content"] = $article["description"];  

把它替换成

  1.     $attachs= unserialize(sax_stripslashes($article["attachments"])); 
  2.     if (is_array($attachs)) { 
  3.         foreach ($attachs AS $attach) { 
  4.             $a_path = $options["attachments_dir"].$attach["filepath"]; 
  5.             if (file_exists($a_path)) { 
  6.                 $a_ext = strtolower(getextension($attach["filename"])); 
  7.                 if ($a_ext == "mp3"){ 
  8.                     // 是mp3 
  9.                     $a_size = sizecount($attach["filesize"]);    
  10.                     $article["mp3"][$attach["attachmentid"]]=array($attach["attachmentid"],$attach["filename"],$a_path,$a_size,$attach["downloads"]); 
  11.                 } 
  12.                 } 
  13.             } 
  14.         } 
  15.         //如果空,释放掉变量 
  16.         $attachmentids=array(); 
  17.  
  18.         foreach($attachmentids as $key => $value){ 
  19.             if($article["image"][$value]){ 
  20.                 unset($article["image"][$value]); 
  21.             } 
  22.             if($article["file"][$value]){ 
  23.                 unset($article["file"][$value]); 
  24.             } 
  25.         } 
  26. $article["content"] = $article["description"]; 

然后打开模板文件夹,打开normal.php文件,在适当的位置(你要放置播放器的地方)加上

  1.                 <!--{if $article["mp3"]}--> 
  2.                     <!--{loop $article["mp3"] $mp3}--> 
  3. <div class="attach">歌曲名: $mp3[1]<br /><embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="$options[url]images/dewplayer.swf?son={$options[url]}attachment.php?id={$mp3[0]}" width="200" height="20" type="application/x-shockwave-flash" autostart="true">  //这里重新修改过                         <!--{/loop}--> 
  4.                  <!--{/if}--> 

最后将文末附件中的播放器放到博客根目录下的images目录中,就可以了。

最后介绍一下整个修改之后实现的效果

  1. 上传mp3文件不会被改名
  2. 显示文章的页面里面播放器自动播放(自动播放功能,注意看两端模板文件中代码的不同)
  3. 在文章列表页面有播放器,但不自动播放

不过这样修改的代码在文章的歌曲会同时播放,所以,推荐一篇文章只放一首歌。如果按照以上过程修改出现了问题,请速速留言,我尽力帮你解决(最好能够提供你的源代码)。

PS.发现伪静态的页面使用这个有问题,发现是地址路径有问题,稍稍修改了一下,添加上$options[url]作为根目录地址,还有在模板里面,两个变量放在一起的话,必须分别用{}括起来。现在一切都正常了。

Sablog-x 2.0 中列表模式显示文中附件类型

给 Sablog-x 2.0 进行一点小小的hack,增加现实附件类型功能。

第一步:

首先打开modulesarticle.php
找到

  •  $query_sql = "SELECT a.articleid,a.stick,a.dateline,a.title,a.views,a.comments,a.alias FROM {$db_prefix}articles a WHERE a.visible=”1″";

添加一个a.attachments

  •  $query_sql = "SELECT a.articleid,a.stick,a.dateline,a.title,a.views,a.comments,a.attachments,a.alias FROM {$db_prefix}articles a WHERE a.visible=”1″";

找到

  1.   $articledb[]=$article;
  2.   unset($articletags);

在其前面一行添加

  1.   //列表模式,显示附件类型
  2.   if ($viewmode == “list”) {
  3.    if ($article["attachments"]) {
  4.     $attachs= unserialize(sax_stripslashes($article["attachments"]));
  5.     if (is_array($attachs)) {
  6.      foreach ($attachs AS $attach) {
  7.       $a_path = $options["attachments_dir"].$attach["filepath"];
  8.       if (file_exists($a_path)) {
  9.        $a_ext = strtolower(getextension($attach["filename"]));
  10.        if ($a_ext == “gif” || $a_ext == “jpg” || $a_ext == “jpeg” || $a_ext == “png”) {
  11.         $article["image"][$attach["attachmentid"]]=array(1,1,1,1,1,1,1,1);
  12.        } elseif ($a_ext == “mp3″){
  13.         // 是mp3
  14.         $article["mp3"][$attach["attachmentid"]]=array(1,1,1,1,1);
  15.        } else {
  16.         // 如果非图片文件
  17.         $article["file"][$attach["attachmentid"]]=array(1,1,1,1);
  18.        }
  19.       }
  20.      }
  21.      //如果空,释放掉变量
  22.      $attachmentids=array();
  23.      foreach($attachmentids as $key => $value){
  24.       if($article["image"][$value]){
  25.        unset($article["image"][$value]);
  26.       }
  27.       if($article["file"][$value]){
  28.        unset($article["file"][$value]);
  29.       }
  30.      }
  31.     }
  32.    }
  33.   }

第二步:

打开templatesdefaultlist.php
找到

  1.     <!–{loop $articledb $article}–>
  2.      <li>$article[dateline] -
  3.      <!–{if $article["stick"]}–>[置顶] <!–{/if}–>
  4.      <a href="$article[url]">$article[title]</a> (浏览:<span style="color:#833">$article[views]</span>, 评论:<span style="color:#833">$article[comments]</span>)</li>
  5.     <!–{/loop}–>

修改为

  1.     <!–{loop $articledb $article}–>
  2.      <li>$article[dateline] -
  3.      <!–{if $article["stick"]}–>[置顶] <!–{/if}–>
  4.                     <!–{if $article["mp3"]}–>[音乐]<!–{/if}–>
  5.                     <!–{if $article["image"]}–>[图片]<!–{/if}–>
  6.      <a href="$article[url]">$article[title]</a> (浏览:<span style="color:#833">$article[views]</span>, 评论:<span style="color:#833">$article[comments]</span>)</li>
  7.     <!–{/loop}–>

如果图片和链接需要并到标题的链接内,就改为

  1.     <!–{loop $articledb $article}–>
  2.      <li>$article[dateline] -
  3.      <!–{if $article["stick"]}–>[置顶] <!–{/if}–>
  4.      <a href="$article[url]">$article[title]</a> (浏览:<span style="color:#833"><!–{if $article["mp3"]}–>[音乐]<!–{/if}–><!–{if $article["image"]}–>[图片]<!–{/if}–>$article[views]</span>, 评论:<span style="color:#833">$article[comments]</span>)</li>
  5.     <!–{/loop}–>

看到没有,sablog-x 2.0里面模板的写法改变了,又原先的print EOF方式改成了<!–{}–>,这样在模板里面看的更清晰了,而且排版很整齐,很方便修改。看来大A用了不少功啊!

注:我修改过代码,增加了附件播放mp3的功能,没有这个功能的朋友修改代码的时候,把与mp3有关的代码可以去掉。