yii2 图片上传

以新闻为例:首先在新闻的ActiveRecord添加规则:

[[‘image‘], ‘file‘, ‘extensions‘ => ‘png, jpg, gif‘],

再定义上传路径

由于我把入口文件移动到了web目录下,目录结构如下:

index.php

<?php
defined(‘YII_DEBUG‘) or define(‘YII_DEBUG‘, true);
defined(‘YII_ENV‘) or define(‘YII_ENV‘, ‘dev‘);

require(__DIR__ . ‘/../vendor/autoload.php‘);
require(__DIR__ . ‘/../vendor/yiisoft/yii2/Yii.php‘);
require(__DIR__ . ‘/../common/config/bootstrap.php‘);
require(__DIR__ . ‘/../frontend/config/bootstrap.php‘);

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . ‘/../common/config/main.php‘),
    require(__DIR__ . ‘/../common/config/main-local.php‘),
    require(__DIR__ . ‘/../frontend/config/main.php‘),
    require(__DIR__ . ‘/../frontend/config/main-local.php‘)
);

(new yii\web\Application($config))->run();

admin/index.php

<?php
defined(‘YII_DEBUG‘) or define(‘YII_DEBUG‘, true);
defined(‘YII_ENV‘) or define(‘YII_ENV‘, ‘dev‘);

require(__DIR__ . ‘/../../vendor/autoload.php‘);
require(__DIR__ . ‘/../../vendor/yiisoft/yii2/Yii.php‘);
require(__DIR__ . ‘/../../common/config/bootstrap.php‘);
require(__DIR__ . ‘/../../backend/config/bootstrap.php‘);

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . ‘/../../common/config/main.php‘),
    require(__DIR__ . ‘/../../common/config/main-local.php‘),
    require(__DIR__ . ‘/../../backend/config/main.php‘),
    require(__DIR__ . ‘/../../backend/config/main-local.php‘)
);

(new yii\web\Application($config))->run();

上传路径: common/bootstrap.php

Yii::setAlias(‘@uploads‘, dirname(dirname(__DIR__)) . ‘/web/uploads‘);

同时定义了跟目录:

Yii::setAlias(‘@mywebroot‘, dirname(dirname(__DIR__)) . ‘/web‘);

上传图片类:common/models/UploadForm.php

<?php
namespace common\models;

use Yii;
use yii\base\Model;
use yii\web\UploadedFile;

/**
 * This is the model class for upload.
 *
 * @property string $path 
 */
class UploadForm extends Model{

	/**
	* 上传图片
	* @image_type common, news, product, cases, ad, category, downloads, friend_link
	*
	*/
	public static function uploads($upfile, $old_image = ‘‘, $image_type = ‘common‘){
		$upload_time = date("Ymd");
		$upload_type_path = $image_type . ‘/‘ . $upload_time . ‘/‘;
		//上传路径
		$upload_save_path = Yii::getAlias(‘@uploads‘) . ‘/‘ . $upload_type_path;
		if(!file_exists($upload_save_path)){
			@mkdir($upload_save_path);
		}
		//保存路径
		$upload_save_url = yii::$app->params[‘uploads_dir‘] . ‘/‘ . $upload_type_path;

		$uploaded_file=UploadedFile::getInstanceByName($upfile);
		if($uploaded_file === null || $uploaded_file->hasError){
            return $old_image;
        }

        //图片名称
        $file_name = $uploaded_file->getBaseName();

        //图片格式
        $file_ext = $uploaded_file->getExtension();

        //新文件名
        $new_file_name=date("YmdHis") . rand(10000,99999). ‘.‘ .$file_ext;

        //删除旧文件
        if(!empty($old_image)){
            @unlink(Yii::getAlias(‘@mywebroot‘) . ‘/‘ . $old_image);
        }

        $uploaded_file->saveAs($upload_save_path . $new_file_name);

        return $upload_save_url . $new_file_name;
	}
    
}
?>

然后再新闻的ActiveRecord中保存前操作:

public function beforeSave($insert)
    {
        $old_image = Yii::$app->request->post()[‘old_image‘];
        $uploaded_file=UploadForm::uploads("News[image]", $old_image, ‘news‘); 
        $this->image = $uploaded_file;
        return parent::beforeSave($insert);
    }
时间: 2024-09-30 09:27:04

yii2 图片上传的相关文章

yii2图片上传

yii2利用自带UploadedFile上传图片 public static function uploadFile($name) { $uploadedFile = UploadedFile::getInstanceByName($name); if($uploadedFile === null || $uploadedFile->hasError) { return null; } $ymd = date("Ymd"); $save_path = dirname(Yii::$

yii2框架原生的结合框架使用的图片上传

首先我们要从model层开始写起,主要是为了创建验证规则,还有图片上传的路径以及图片的命名规则 接下来我们要在控制器层写好业务逻辑,就是什么情况下直接在调用model层进行上传,一般失败的时候或者超出自己规定之外的都会跳转页面 最后,我们来定义一下表单页面!因为model的验证规则其实已经在rule里面写好了,所以用yii2自带的表单更好! 另外用yii2自带的表单的时候一定要注意一下几点: 1.由于表单没有指明控制器的方法,所以大概的意思就是这个表单页面的命名必须和方法名是一样的! 2.表单的

yii2.0 图片上传(摘录)

文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101izmn.html 下面小伙就带领大学学习一下 Yii2.0 的图片上传类的使用,还是老样子,如果代码样式混乱,我会附上截图供大家学习. 1.UserController.php 很重要的一步,那就是 use yii\web\UploadedFile; public function actionUpload(){ $model = new User(); user 为用户表model: if ($m

yii2.0下,单图片上传到搜狐云台以及图片上传到本机。

图片服务器接的是搜狐云台.在搜狐云台上有代码包,下载下来,放到yii框架的vendor下. yii2.0导入第三方库,很简单,写个autoload的文件,然后在入口脚本index.php中包含那个autoload文件就好了.具体到这个云台的库,只要包含代码中的autoload文件就好了. 简单介绍下搜狐云台的实现,用户会有一个对应的域名,然后选择建一些bucket,文件的上传下载都是在这个bucket中执行.函数调用在云台提供的文档中介绍的很清楚.这里就不再介绍了.同时我只从php的部分来介绍,

jq upload图片上传代码

/* * 图片上传 * */ function postImgData() { $("#addFileInfo input[name='file']").change(function () { console.log($(this).val()) if (!$(this).val()) { return } var fileTyle = $(this).val().split("."); console.log(fileTyle); if (fileTyle[1]

[项目构建 五]babasport ajax图片上传及FastDFS入门案例.

今天来开始写图片上传的功能, 现在的图片上传都讲求 上传完成后立刻回显且页面不刷新, 这里到底是怎么做的呢? 当然是借助于ajax了, 但是ajax又不能提交表单, 这里我们还要借助一个插件: jquery.form.js剩下的一个是FastDFS, 那么什么是FastDFS呢? FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server).存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文

ckeditor4.5.1配置图片上传的方法

本篇博文主要面向初学者,一步一步地实现ckeditor的图片上传,欢迎各位大神指正. ckeditor的图片上传默认是关闭的,网上也有很多相关的教程,可是不是讲的不完整,就是版本太旧已经不适用.我写这篇博文主要面向初学者,有错误的地方欢迎指正. 截止本文撰写,ckeditor最新版本是4.5.1,我下载的版本是4.5.1standard,如果本文的方法不管用,请下载同一版本尝试. 1.开启图片上传界面 文件地址:ckeditor/plugins/image/dialogs/image.js 搜索

数往知来 JQuery 图片上传_水印 &lt;二十二&gt;

一.图片上传  :enctype='multipart/form-date 首先在进行文件上传时,添加form表单中的enctype属性指定enctype='multipart/form-date', 文件数据发送给服务端,并不是把文件路径发送给服务端了,它会随机生成一个分割字符串, 把每一个表单元素分割开 <form method='post' action='' enctype='multipart/form-date'> //这里的enctype是提交请求报文的报文体的一种编码格式, 默

微信端调取相册和摄像头,实现图片上传,并上传到本地服务器

在微信公众号网页开发时,遇到了图片上传的问题,查看了微信的开发者文档,里面的资料比较全.接着我们看一下整个的流程 1.config权限配置 $.ajax({ url:'wx_getConfig', type:'get', dataType:'json', async:false, success:function(data){ var appId = data[0].appId; var timestamp = data[0].timestamp; var nonceStr = data[0].