wqq1207 2011-08-15 15:08:08 5275次浏览 1条回复 0 0 0

参照http://www.yiiframework.com/extension/lcswfupload 中文说明 SWFUpload Yii文件上传 整合 swfupload

1.flash文件上传

2.支持多文件同时上传

3.显示文件上传进度条

Requirements Yii 1.1 or above

Usage SWFUpload 图片上传

第一步:在控制器类里面载入SWFUploadAction

public function actions() {
  return array(
    'upload'=>array(
      'class'=>'application.extensions.swfupload.SWFUploadAction',
      'filepath'=>'/var/www/yourpath/yourfilename.EXT', //注意这里是绝对路径,.EXT是文件后缀名替代符号
    )
  );
}

说明: 你必须要有这个upload action的权限,可以在accessRules函数中添加upload action 的访问权限

1.filepath 文件的完整上传路径 包括文件名 如: C:/file/logo.EXT 后缀名是用户上传的文件决定所以在这里只需要用 .EXT 替代

2.SWFUploadAction支持两个事件 onBeforeUpload 和 onAfterUpload

第二步:在视图中调用widget

<?php    $this->widget('application.extensions.swfupload.SWFUpload',array('callbackJS'=>'swfupload_callback'));
?>

说明: callbackJS 是图片上传后执行的js函数 函数定义格式如下:

第一参数是文件名字name,

第二参数是文件路径path,

第三参数是oldname是文件的原始名字,

javascript代码如下:

function swfupload_callback(name,path,oldname)  
{
  $("#Sponsor_logo").val(name);
  $("#thumbnails_1").html("<img src='"+path+"/"+name+"?"+(new Date()).getTime()+"' />"); 
}

整理一下到代码中是这样的: controller页面中

public function accessRules()
{
  return array(
    array('allow', 
      'actions'=>array('upload'),
      'users'=>array('*'),
    ),
    ......
  );
}

public function actions() {
  return array(
    'upload'=>array(
      'class'=>'application.extensions.swfupload.SWFUploadAction',
      'filepath'=>'/var/www/yourpath/yourfilename.EXT',   // 'EXT' will be replaced by file extension
      'onAfterUpload'=>array($this,'saveFile'),
    )
  );
}

public function saveFile($event)
{
  //$event->sender['uploadedFile'] is CUploadedFile
  //$event->sender['uploadedFile']->name; the original name of the file being uploaded
  // $event->sender['name']  yourfilename.EXT
  // do something   ......
 
}

view的页面中

<?php  
$this->widget('application.extensions.swfupload.SWFUpload',array(
     'callbackJS'=>'swfupload_callback',
    )
);
?>
<input type="text"  name="image_name" id="image_name" />
 
<script>
function swfupload_callback(name,path,oldname)  
{
  $("#image_name").val(name);
  $("#thumbnails_1").html("<img src='"+path+"/"+name+"?"+(new Date()).getTime()+"' />"); 
} 
</script>

那个网站的中文解释就是这样的,我照着做了,可是还是不能用,我也没有理解。 首先我下载了扩展,就按照这个写的 我不理解这个地方:

'filepath'=>'/var/www/yourpath/yourfilename.EXT',   // 'EXT' will be replaced by file extension

不可能把上传的文件指定是哪个啊,而且这个地方也不知道有什么用:

public function saveFile($event)
{
  //$event->sender['uploadedFile'] is CUploadedFile
  //$event->sender['uploadedFile']->name; the original name of the file being uploaded
  // $event->sender['name']  yourfilename.EXT
  // do something   ......
}

还有

<script>
function swfupload_callback(name,path,oldname)  
{
  $("#image_name").val(name);
  $("#thumbnails_1").html("<img src='"+path+"/"+name+"?"+(new Date()).getTime()+"' />"); 
} 
</script>

这个怎么传name,path,oldname这3个值啊,脑子很糊涂啊

您需要登录后才可以回复。登录 | 立即注册