`
shoukii0721
  • 浏览: 79850 次
社区版块
存档分类
最新评论

Yii中文件上传下载 (CHtml::activeFileField)

 
阅读更多

页面
-------------------------------------------------

<?php $form=$this->beginWidget('CActiveForm', array(
		'id'=>'add-form',
		'enableClientValidation'=>true,
	    'clientOptions'=>array( 'validateOnSubmit'=>true,),
	    'htmlOptions'=>array('enctype'=>'multipart/form-data'),  
    )); 
?>
    <table>
        <tr>
            <td width="20%">
                <b>ファイルパス:</b>&nbsp;&nbsp;<font color="red">*</font>
            </td>
            <td width="80%">
                <?php echo CHtml::activeFileField($model, 'file'); ?>
                <?php echo $form->error($model,'file');?>
            </td>
        </tr>
    </table>

    <table>
        <tr>
            <td>
                <?php echo CHtml::button('上传', array('submit' => array('downfiles/upload'))); ?>
            </td>
        </tr>
    </table>



Model
-------------------------------------------------
public function rules()
{
	return array(
                
        array('file', 'file','allowEmpty'=>true ,
                'types'=>'jpg, gif, png, doc, txt',
                'maxSize'=>1024 * 1024 * 10, // 10MB
                'tooLarge'=>'The file was larger than 10MB. Please upload a smaller file.',
            ),
	);
}


上传
-------------------------------------------------
public function actionUpload(){
    
    $model = new DownFiles();
    
    if(isset($_POST["DownFiles"])){
        
        $model->attributes=$_POST['DownFiles'];

        $file = CUploadedFile :: getInstance($model, 'file');
        
        if(is_null($file)){
            yii::app ()->user->setFlash('failed', '请选择上传文件');
            $this->render('upload', array('model' => $model));
            return ;
        }
        
        if (is_object($file) && get_class($file) == 'CUploadedFile') {
            
            Yii::log("File Name : "  . $file->getName() );
            
            // 文件类型
            $model->fileType = strtolower($file->getExtensionName());

            // 存储文件名
            $newFileName = date('YmdHis') . '_' . rand(1000, 9999) . '.' . $model->fileType; 
            // 服务器端存储路径
            $newFilepath = Yii::app()->params['upload_folder'] . $newFileName;

            // 上传文件名
            $model->fileName = $file->getName();
            // 文件类型 (application/x-msdownload、application/pdf、application/octet-stream)
            $model->fileType = $file->getType();
            // 文件大小
            $model->fileSize = $file->getSize();
            
            if ($model->validate()  && $model->save()){
                // 将文件存在在服务器端
                $file->saveAs($newFilepath);

                yii::app ()->user->setFlash('successed', '上传成功');
            } else {
                yii::app ()->user->setFlash('failed', '上传失败');
            }
            
        } else {
            yii::app ()->user->setFlash('failed', '上传失败');
        }
        
        $this->render('upload', array('model' => $model));
        
    }else{
        $this->render('upload', array(
            'model' => $model,
        ));
    }
    
}






文件
-------------------------------------------------

public function actionDownload(){
    
    if (isset($_GET["id"])) {
        $id = $_GET["id"];

        $model = DownFiles::model()->find('id =:id', array('id' => $id));
        
        if ($model == null) {
            throw new CHttpException ('500', '文件不存在');
        } else {
            // 服务器端文件的路径
            $fileName = $model->saveFilePath ;
            
            if (file_exists($fileName)){
                yii::app ()->request->sendFile ($model->fileName,  file_get_contents ($fileName));
            }
        }
    }
}
分享到:
评论

相关推荐

    Yii 2文件下载

    标题提到的"Yii 2文件下载"可能指的是Yii 2.0框架的安装包或者相关的扩展或示例代码。 在描述中,我们看到“找了好久才找到的Yii2.0”,这可能暗示了Yii 2.0的相关资源并不总是容易找到,尤其对于初学者来说,可能...

    Yii2扩展开发与代码复用:以资源包为例

    在Yii2框架中,资源包的概念主要指的是前端开发中常见的资源文件集合,这些资源包括JavaScript脚本、CSS样式表、图片以及多媒体文件等。资源文件通常被放置在Web服务器的可访问目录下,以便能够被浏览器直接读取。...

    yii2 图片上传扩展插件

    在 Yii2 中,处理文件上传是常见的需求,尤其是图片上传,它能够为用户界面增添动态性和互动性。"yii2 图片上传扩展插件"就是为了简化这一过程而设计的。 该插件主要解决以下问题: 1. **图片预览**:允许用户在上...

    yii使用activeFileField控件实现上传文件与图片的方法

    控件函数原型为:`CHtml::activeFileField(CModel $model, string $attribute, array $htmlOptions = array())`。其中,`$model`指明了模型,`$attribute`指明了模型中对应的属性,`$htmlOptions`则是一些额外的HTML...

    yii框架中文文档、yii中文手册教程

    在“yii1.1中文文档”中,包含了Yii 1.1版本的详尽教程和参考指南。这个版本是Yii框架的一个稳定版本,尽管现在已经有了更新的2.0版本,但仍然有许多项目基于1.1版本运行。文档通常会涵盖框架的基础知识,如MVC...

    yii导出html文件

    yii导出html文件,或者导出text文件,超简洁。纯手打请高评谢谢

    yii2-resque-module::construction:正在施工:construction:

    Yii 2.0 Framework的Resque Job Manager模块 具有后端UI的Resque作业管理器模块 安装 安装此扩展的首选方法是通过 。 无论运行 php composer.phar require --prefer-dist hrzg/yii2-resque-module "*" 或添加 ...

    Yii 2.0.13.1.zip

    数据库数据库支持有关使用表达式的一些增强功能,现在,您可以在\yii\db\QueryTrait::limit(),\yii\db\QueryTrait::offset()和\yii\data\Sort中使用它们。MSSQLMSSQL支持得到增强。首先,模式阅读性能显着提高...

    yii2-adminlte3-asset:Yii2框架的AdminLte3资产

    Yii2框架的AdminLTE 3资产该软件包为主题提供了必要的资产。 有关主题信息,请参阅。安装安装此扩展的首选方法是通过 。 无论运行php composer.phar require --prefer-dist bobonov/yii2-adminlte-assets "~1.0.0"或...

    yii2 文件上传笔记

    yii2 文件上传笔记

    yii2-schemadump:从现有数据库生成模式

    演示版要求PHP 7.3或更高版本Yii 2.x安装composer require --dev jamband/yii2-schemadump用法在config / console.php中添加以下内容: return [ . . . 'components' =&gt; [ . . . ], 'controllerMap' =&gt; [ 'migrate' ...

    yii ajax应用

    在这个例子中,Yii的 `CHtml::ajaxLink()` 生成了所需的JavaScript代码,实现了点击链接后无刷新地更新页面内容的功能,提高了用户体验。同时,控制器和视图之间的协作展示了MVC(模型-视图-控制器)架构在Yii中的...

    yii2-exportable-widget:允许将GridView小部件导出为不同的格式

    Yii2的可导出小部件 一个库不仅仅是一个简单的小部件。 借助此库,无论您使用我们的(强烈建议使用)还是您自己的库,您都可以向Yii2应用程序提供导出功能。 如果您使用的是,则将利用预定义的导出格式集,该格式...

    yii2 头像上传 完整版 带cookie保存

    在Yii2中实现头像上传功能是一项常见的需求,特别是在用户个人信息管理或者社交网络应用中。这个"yii2 头像上传 完整版"插件是专门为Yii2框架设计的,旨在帮助开发者快速集成头像上传功能,同时通过cookie保存用户...

    实例讲解yii2.0在php命令行中运行的步骤

    Yii中的资源是和Web页面相关的文件,可为CSS文件,JavaScript文件,图片或视频等,资源放在Web可访问的目录下,直接被Web服务器调用。 有时候有些功能需要做到计划任务中去,因此就需要yii能用php命令去执行。yii2.0...

    yii framework 中文完全手册

    该手册的"yii-api.chm"文件很可能是Yii的API参考文档,包含框架内所有类、方法和属性的详细说明。API文档对于开发者来说是至关重要的,因为它允许他们快速查找并理解框架提供的各种功能。 在Yii框架中,核心概念...

    Yii2.0中文学习手册

    - 从官网`yiiframework.com`下载Yii2.0的归档文件。 2. **解压缩**: - 将下载的文件解压缩到Web服务器的文档根目录下。 3. **配置`cookieValidationKey`**: - 修改`config/web.php`文件中的`...

    yii2-upload-behavior, ActiveRecord的Yii2文件/图像上传行为.zip

    yii2-upload-behavior, ActiveRecord的Yii2文件/图像上传行为 Yii2文件/图像上传行为这个包是两种类似行为的集合。 第一个允许你将上传的文件保留为。 第二个允许你为上传的图片生成缩略图。 可以为不同的属性多次...

Global site tag (gtag.js) - Google Analytics