yii2 multi-image upload component usage tutorial php example
This article mainly introduces the tutorial for using the yii2 multi-image upload component. There are many points to pay attention to during use. The editor below will share it with you on the Script Home platform. Friends who need it can refer to it
Recently, when I was using yii2 to develop a form page, there was a need to upload multiple images. I searched for components in this area and basically found the Amway fileInput component, so I tried to use this library to complete the back-end form page. Picture upload function. During the use process, I found that there are still many small details that need to be paid attention to, so I recorded the use process.
yii2-widget-fileinput The github address of this library is here. The installation part is very routine. Just follow the documentation.
Let’s take a look at several common operations shown in the official documents:
use kartik\widgets\FileInput // or 'use kartikile\FileInput' if you have only installed yii2-widget-fileinput in isolation // 使用ActiveForm 和 model绑定的单张图片示例 echo $form->field($model, 'avatar')->widget(FileInput::classname(), [ 'options' => ['accept' => 'image/*'], ]); // 多图上传示例 echo '<label class="control-label">Add Attachments</label>'; echo FileInput::widget([ 'model' => $model, 'attribute' => 'attachment_1[]', 'options' => ['multiple' => true] ]); // 不绑定model的使用方法 echo '<label class="control-label">Upload Document</label>'; echo FileInput::widget([ 'name' => 'attachment_3', ]); // 不可点击的示例 echo '<label class="control-label">Select Attachment</label>'; echo FileInput::widget([ 'name' => 'attachment_4', 'disabled' => true ]);
And these are common operations, let’s imagine, we To complete adding products on Taobao, there is a product table with several pictures in a one-to-many relationship. At this time, you need to use the multi-picture upload function. And we also want to upload images asynchronously, so we can configure our fileInput component like this
<?= $form->field($model, 'image[]')->label($label)->widget(FileInput::classname(), [ // 'name' => 'ImgSelect', 'language' => 'zh-CN', 'options' => ['multiple' => true, 'accept' => 'image/*'], 'pluginOptions' => [ 'initialPreview' => $initialPreview, 'initialPreviewConfig' => $initialPreviewConfig, 'allowedPreviewTypes' => ['image'], 'allowedFileExtensions' => ['jpg', 'gif', 'png'], 'previewFileType' => 'image', 'overwriteInitial' => false, 'browseLabel' => '选择图片', 'msgFilesTooMany' => "选择上传的图片数量({n}) 超过允许的最大图片数{m}!", 'maxFileCount' => 5,//允许上传最多的图片5张 'maxFileSize' => 2048,//限制图片最大200kB 'uploadUrl' => Url::to(['/upload/image']), //'uploadExtraData' => ['testid' => 'listimg'], 'uploadAsync' => true,//配置异步上传还是同步上传 ], 'pluginEvents' => [ 'filepredelete' => "function(event, key) { return (!confirm('确认要删除')); }", 'fileuploaded' => 'function(event, data, previewId, index) { $(event.currentTarget.closest("form")).append(data.response.imgfile); }', 'filedeleted' => 'function(event, key) { $(event.currentTarget.closest("form")).find("#"+key).remove(); return; }', ] ]); ?>
We configure the image browsing configuration in the controller and pass it Come in. I have added the configuration to the key points in the code. We can see that the asynchronous upload URL has been configured in the upload/image controller, and we have also added js when deletion, upload and other operations are completed. callback.
As mentioned above, we have listed some basic properties and settings of the component FileInput. If necessary, you can check the document for detailed description of the properties.
Look at how we write the actionImage function in the controller that uploads images
/** * 上传图片到临时目录 * @return string * @throws \yii\base\Exception */ public function actionImage() { if (Yii::$app->request->isPost) { $res = []; $initialPreview = []; $initialPreviewConfig = []; $images = UploadedFile::getInstancesByName("UploadImage[image]"); if (count($images) > 0) { foreach ($images as $key => $image) { if ($image->size > 2048 * 1024) { $res = ['error' => '图片最大不可超过2M']; return json_encode($res); } if (!in_array(strtolower($image->extension), array('gif', 'jpg', 'jpeg', 'png'))) { $res = ['error' => '请上传标准图片文件, 支持gif,jpg,png和jpeg.']; return json_encode($res); } $dir = '/uploads/temp/'; //生成唯一uuid用来保存到服务器上图片名称 $pickey = ToolExtend::genuuid(); $filename = $pickey . '.' . $image->getExtension(); //如果文件夹不存在,则新建文件夹 if (!file_exists(Yii::getAlias('@backend') . '/web' . $dir)) { FileHelper::createDirectory(Yii::getAlias('@backend') . '/web' . $dir, 777); } $filepath = realpath(Yii::getAlias('@backend') . '/web' . $dir) . '/'; $file = $filepath . $filename; if ($image->saveAs($file)) { $imgpath = $dir . $filename; /*Image::thumbnail($file, 100, 100) ->save($file . '_100x100.jpg', ['quality' => 80]); */ // array_push($initialPreview, "<img src='" . $imgpath . "' class='file-preview-image' alt='" . $filename . "' title='" . $filename . "'>"); $config = [ 'caption' => $filename, 'width' => '120px', 'url' => '../upload/delete', // server delete action 'key' => $pickey, 'extra' => ['filename' => $filename] ]; array_push($initialPreviewConfig, $config); $res = [ "initialPreview" => $initialPreview, "initialPreviewConfig" => $initialPreviewConfig, "imgfile" => "<input name='image[]' id='" . $pickey . "' type='hidden' value='" . $imgpath . "'/>", 'filename' => $filename, 'imagePath' => $imgpath, ]; } } } return json_encode($res); } }
Now, the work of uploading multiple images We have achieved it perfectly.
In order to achieve the deletion effect of pictures, you can upload two pictures first. You can upload a single image or multiple images.
After the upload is successful, you can refresh the current page. Because we have implemented the image preview in the controller from the beginning, the two images we have uploaded should be displayed.
I won’t go into details about the deletion function. As long as you configure the deleted URL in the browser, the same operation is done.
Summary
The above is the tutorial for using the yii2 multi-image upload component introduced by the editor. I hope it will be helpful to everyone. , if you have any questions, please leave me a message, and the editor will reply to you in time. I would also like to thank everyone for your support of the Script House website!
Articles you may be interested in:
PHP implementation of user login case code php example
ThinkPHP Example analysis of methods to prevent repeated submission of forms PHP examples
Analysis of PHP paging display methods [With PHP general paging class php tips
The above is the detailed content of yii2 multi-image upload component usage tutorial php example. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The PHP Client URL (cURL) extension is a powerful tool for developers, enabling seamless interaction with remote servers and REST APIs. By leveraging libcurl, a well-respected multi-protocol file transfer library, PHP cURL facilitates efficient execution of various network protocols, including HTTP, HTTPS, and FTP. This extension offers granular control over HTTP requests, supports multiple concurrent operations, and provides built-in security features.

Alipay PHP...

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Article discusses essential security features in frameworks to protect against vulnerabilities, including input validation, authentication, and regular updates.

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

The article discusses adding custom functionality to frameworks, focusing on understanding architecture, identifying extension points, and best practices for integration and debugging.

An official introduction to the non-blocking feature of ReactPHP in-depth interpretation of ReactPHP's non-blocking feature has aroused many developers' questions: "ReactPHPisnon-blockingbydefault...
