我的yii2-uploadify-widget插件不是用composer下载的,实验代码都是官网上提供的,version2,和example2
controller中的代码:
public function actions()
{
return [
's-upload' => [
'class' => UploadAction::className(),
'basePath' => '@webroot/upload', //存放的磁盘目录
'baseUrl' => '@web/upload', //网站访问 url
'enableCsrf' => true, // default
'postFieldName' => 'Filedata', // default
//BEGIN METHOD
'format' => [$this, 'methodName'],
//END METHOD
//BEGIN CLOSURE BY-HASH
'overwriteIfExist' => true,
'format' => function (UploadAction $action) { //处理上传数据文件名函数(不会建文件夹)
$fileext = $action->uploadfile->getExtension();
$filename = sha1_file($action->uploadfile->tempName);
return "{$filename}.{$fileext}";
},
//END CLOSURE BY-HASH
//BEGIN CLOSURE BY TIME
'format' => function (UploadAction $action) { //想要多调用这个函数(会新建文件夹)
$fileext = $action->uploadfile->getExtension();
$filehash = sha1(uniqid() . time());
$p1 = substr($filehash, 0, 2);
$p2 = substr($filehash, 2, 2);
return "{$p1}/{$p2}/{$filehash}.{$fileext}";
},
//END CLOSURE BY TIME
'validateOptions' => [
'extensions' => ['jpg', 'png'],
'maxSize' => 1 * 1024 * 1024, //file size
],
'beforeValidate' => function (UploadAction $action) {
//throw new Exception('test error');
},
'afterValidate' => function (UploadAction $action) {},
'beforeSave' => function (UploadAction $action) {},
'afterSave' => function (UploadAction $action) {
//$action->output
$action->output['fileUrl'] = $action->getWebUrl();
$action->output['fileName'] = $action->getFilename(); // "image/yyyymmddtimerand.jpg"
//www.smister.com/upload/images/aa.jpg
// $action->getWebUrl(); // "baseUrl + filename, /upload/image/yyyymmddtimerand.jpg"
$action->output['filePath'] = $action->getSavePath(); // "/var/www/htdocs/upload/image/yyyymmddtimerand.jpg"
},
],
];
}
index.php视图代码
//外部TAG
echo Html::fileInput('test', NULL, ['id' => 'test']);
echo Uploadify::widget([
'url' => \yii\helpers\Url::to(['s-upload']),
'id' => 'test',
'csrf' => true,
'renderTag' => false,
'jsOptions' => [
'width' => 120,
'height' => 40,
'onUploadError' => new JsExpression(<<<EOF
function(file, errorCode, errorMsg, errorString) {
console.log('The file ' + file.name + ' could not be uploaded: ' + errorString + errorCode + errorMsg);
}
EOF
),
'onUploadSuccess' => new JsExpression(<<<EOF
function(file, data, response) {
data = JSON.parse(data);
if (data.error) {
console.log(data.msg);
} else {
console.log(data.fileUrl);
}
}
EOF
),
]
]);
controller中的代码:
public function actions()
{
return [
's-upload' => [
'class' => UploadAction::className(),
'basePath' => '@webroot/upload', //存放的磁盘目录
'baseUrl' => '@web/upload', //网站访问 url
'enableCsrf' => true, // default
'postFieldName' => 'Filedata', // default
//BEGIN METHOD
'format' => [$this, 'methodName'],
//END METHOD
//BEGIN CLOSURE BY-HASH
'overwriteIfExist' => true,
'format' => function (UploadAction $action) { //处理上传数据文件名函数(不会建文件夹)
$fileext = $action->uploadfile->getExtension();
$filename = sha1_file($action->uploadfile->tempName);
return "{$filename}.{$fileext}";
},
//END CLOSURE BY-HASH
//BEGIN CLOSURE BY TIME
'format' => function (UploadAction $action) { //想要多调用这个函数(会新建文件夹)
$fileext = $action->uploadfile->getExtension();
$filehash = sha1(uniqid() . time());
$p1 = substr($filehash, 0, 2);
$p2 = substr($filehash, 2, 2);
return "{$p1}/{$p2}/{$filehash}.{$fileext}";
},
//END CLOSURE BY TIME
'validateOptions' => [
'extensions' => ['jpg', 'png'],
'maxSize' => 1 * 1024 * 1024, //file size
],
'beforeValidate' => function (UploadAction $action) {
//throw new Exception('test error');
},
'afterValidate' => function (UploadAction $action) {},
'beforeSave' => function (UploadAction $action) {},
'afterSave' => function (UploadAction $action) {
//$action->output
$action->output['fileUrl'] = $action->getWebUrl();
$action->output['fileName'] = $action->getFilename(); // "image/yyyymmddtimerand.jpg"
//www.smister.com/upload/images/aa.jpg
// $action->getWebUrl(); // "baseUrl + filename, /upload/image/yyyymmddtimerand.jpg"
$action->output['filePath'] = $action->getSavePath(); // "/var/www/htdocs/upload/image/yyyymmddtimerand.jpg"
},
],
];
}
index.php视图代码
//外部TAG
echo Html::fileInput('test', NULL, ['id' => 'test']);
echo Uploadify::widget([
'url' => \yii\helpers\Url::to(['s-upload']),
'id' => 'test',
'csrf' => true,
'renderTag' => false,
'jsOptions' => [
'width' => 120,
'height' => 40,
'onUploadError' => new JsExpression(<<<EOF
function(file, errorCode, errorMsg, errorString) {
console.log('The file ' + file.name + ' could not be uploaded: ' + errorString + errorCode + errorMsg);
}
EOF
),
'onUploadSuccess' => new JsExpression(<<<EOF
function(file, data, response) {
data = JSON.parse(data);
if (data.error) {
console.log(data.msg);
} else {
console.log(data.fileUrl);
}
}
EOF
),
]
]);
'beforeValidate' => function (UploadAction $action) {
throw new Exception('test error');
},
注释去掉之后会抛出 1_Homepage_06.jpg (3KB) - HTTP Error (500),错误。后来,我想通过composer来更新我的框架,下载安装composer作曲家成功,
但Composer Asset插件却安装不了,每次输入composer.phar global require "fxp/composer-asset-plugin:^1.2.0"命令回车之后,submit3都会自动打开一个composer.phar文件
也就是这个原因,我的yii2高级模版都是通过手动安装的
'beforeValidate' => function (UploadAction $action) {
throw new Exception('test error');
},
注释去掉之后会抛出 1_Homepage_06.jpg (3KB) - HTTP Error (500),错误。后来,我想通过composer来更新我的框架,下载安装composer作曲家成功,
但Composer Asset插件却安装不了,每次输入composer.phar global require "fxp/composer-asset-plugin:^1.2.0"命令回车之后,submit3都会自动打开一个composer.phar文件
也就是这个原因,我的yii2高级模版都是通过手动安装的,如果用办法成功安装Composer Asset插件,然后通过composer更新yii2框架也是可以直接解决上传问题的