当前位置:Gxlcms > php框架 > yii2 怎么上传图片

yii2 怎么上传图片

时间:2021-07-01 10:21:17 帮助过:45人阅读

第一步:搭建上传类基础工作,具体请看:http://www.yiichina.com/tutorial/328

第二步:建站一个product表,字段id,name,picurl.

第三步:GII生成PRODUCT 模型,类,视图。

第四步:

  1. main.css 放在frontend\web\css
  2. .onedialog{position:absolute; left: 300px; top: 500px; z-index: 10; width: 700px; height: 400px;border-radius:5px;
  3. box-shadow:5px 2px 6px #000; border: 2px solid #666}
  4. .oneiframe{ width: 100%; height: 100% }

main.js 放在 frontend\web\assets

  1. $(function(){
  2. $('#product-picurl').click(function(){
  3. $('#oneupload').remove();
  4. $('<div>').appendTo($('body')).attr({"class":"onedialog",'id':"oneupload"});
  5. $('<iframe>').appendTo($('#oneupload')).attr({"src":"?r=upload","class":"oneiframe"})
  6. });
  7. var v=$('#product-picurl').val();
  8. if(v){
  9. $('<img>').attr({"src":v,"style":"height:50px"}).insertAfter($('#product-picurl'));
  10. }
  11. });

然后在frontend\assets\AppAsset.php中注册这两个文件

  1. class AppAsset extends AssetBundle
  2. {
  3. public $basePath = '@webroot';
  4. public $baseUrl = '@web';
  5. public $css = [
  6. 'css/site.css',
  7. 'css/main.css',
  8. ];
  9. public $js = [
  10. 'assets/main.js'
  11. ];
  12. public $depends = [
  13. 'yii\web\YiiAsset',
  14. 'yii\bootstrap\BootstrapAsset',
  15. ];
  16. }

UploadController.php

  1. <?PHP
  2. namespace frontend\controllers;
  3. use Yii;
  4. use yii\web\Controller;
  5. use app\models\UploadForm;
  6. use yii\web\UploadedFile;
  7. class UploadController extends Controller
  8. {
  9. public function actionIndex()
  10. {
  11. $model = new UploadForm();
  12. if (Yii::$app->request->isPost) {
  13. $model->file = UploadedFile::getInstance($model, 'file');
  14. if ($model->file && $model->validate()) {
  15. //$model->file->saveAs('uploads/' . $model->file->baseName . '.' .$model->file->extension);
  16. $fileName='uploads/' . date("YmdHis") . '.' . $model->file->extension;
  17. $model->file->saveAs($fileName);
  18. }
  19. echo "<script src='assets/upload.js'></script>;";
  20. echo "<script>";
  21. echo "var oneinput=parent.document.getElementById('product-picurl');";
  22. echo "parent.document.getElementById('product-picurl').value='".$fileName."';";
  23. echo "var oneupload = parent.document.getElementById('oneupload');";
  24. echo "var img = document.createElement('img');";
  25. echo "img.setAttribute('style', 'height:50px');";
  26. echo "img.src ='".$fileName."';";
  27. echo "insertAfter(img,oneinput);";
  28. echo "oneupload.parentNode.removeChild(oneupload)";
  29. echo "</script>";
  30. }
  31. return $this->render('upload', ['model' => $model]);
  32. }
  33. }
  34. ?>

UploadForm.php

  1. <?PHP
  2. namespace app\models;
  3. use yii\base\Model;
  4. use yii\web\UploadedFile;
  5. /**
  6. * UploadForm is the model behind the upload form.
  7. */
  8. class UploadForm extends Model
  9. {
  10. /**
  11. * @var UploadedFile file attribute
  12. */
  13. public $file;
  14. /**
  15. * @return array the validation rules.
  16. */
  17. public function rules()
  18. {
  19. return [
  20. [['file'], 'file'],
  21. ];
  22. }
  23. }
  24. ?>

upload.php

  1. <?php
  2. use yii\widgets\ActiveForm;
  3. ?>
  4. <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
  5. <?= $form->field($model, 'file')->fileInput() ?>
  6. <button>Submit</button>
  7. <?php ActiveForm::end() ?>

PHP中文网,有大量免费的Yii入门教程,欢迎大家学习!

以上就是yii2 怎么上传图片的详细内容,更多请关注Gxlcms其它相关文章!

人气教程排行