ThinkPHP6作為一款優秀的PHP框架,提供了豐富的操作類別庫和工具,使得開發者可以更快速地實現功能需求。在網頁開發中,富文本編輯器常作為必備工具之一,可以幫助使用者更方便編輯內容。然而,當使用者想要插入圖片時,就需要有圖片上傳功能支援。
本文將以UMEditor作為範例,介紹在ThinkPHP6中如何實作富文本編輯器圖片上傳功能。
第一步:引入UMEditor
將UMEditor的資源檔案(包括js、css、images等)放到專案目錄下的public目錄中,然後在HTML頁面中引入UMEditor的相關資源文件。範例如下:
1 2 3 4 | <!-- 引入UMEditor -->
<link href= "/public/UMEditor/themes/default/css/umeditor.css" rel= "stylesheet" >
<script src= "/public/UMEditor/umeditor.config.js" ></script>
<script src= "/public/UMEditor/umeditor.min.js" ></script>
|
登入後複製
第二步:寫圖片上傳介面
在ThinkPHP6中,可以透過Route類別和Controller類別來實作介面的編寫。
- 在routes目錄下建立一個upload.php文件,程式碼如下:
1 2 3 4 | <?php
use thinkacadeRoute;
Route::post( 'upload/image' , 'api/Upload/uploadImage' );
|
登入後複製
該路由映射的控制器方法為Upload控制器的uploadImage方法。
- 在app目錄下建立一個api目錄,然後在api目錄下建立一個Upload控制器和一個UploadService服務,程式碼如下:
##Upload控制器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php
namespace apppicontroller;
use apppiserviceUploadService;
use thinkacadeRequest;
class Upload
{
public function uploadImage()
{
$file = Request::file( 'upfile' );
$uploadService = new UploadService();
$result = $uploadService ->uploadImage( $file );
return json( $result );
}
}
|
登入後複製
UploadService服務:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php
namespace apppiservice;
use thinkacadeFilesystem;
use thinkacadeConfig;
class UploadService
{
public function uploadImage( $file )
{
$storage = Config::get( 'filesystem.default' );
$savename = Filesystem::disk( $storage )->putFile( 'images' , $file );
$url = Config::get( "filesystem.disks.{$storage}.url" ) . '/' . str_replace ( '\', ' /', $savename );
return [
'state' => 'SUCCESS' ,
'url' => $url ,
'title' => '' ,
'original' => $file ->getOriginalName(),
'type' => $file ->getOriginalExtension(),
'size' => $file ->getSize(),
];
}
}
|
登入後複製
在UploadService中,我們使用了ThinkPHP6提供的檔案儲存功能,以達到圖片上傳的目的。具體實作使用了Filesystem類別和Config類別。在設定檔config/filesystem.php中,需要配置對應的儲存方式和路徑。
第三步:設定UMEditor
##在HTML頁面中實例化UMEditor,並設定圖片上傳介面:
1 2 3 4 5 6 7 8 | <script type= "text/javascript" >
var um = UM.getEditor( 'myEditor' , {
imageUrl: '/upload/image' ,
imageFieldName: 'upfile' ,
imageMaxSize: 2048000,
imageAllowFiles: [ '.jpg' , '.png' , '.gif' , '.jpeg' ],
});
</script>
|
登入後複製
設定UMEditor的檔案上傳路徑:
1 2 3 | <script type= "text/javascript" >
UMEDITOR_CONFIG.serverUrl = '/public/UMEditor/php/controller.php/?action=' ;
</script>
|
登入後複製
在controller.php中,需要將圖片上傳的請求轉送到我們剛剛寫的圖片上傳介面。 至此,我們已經成功地在ThinkPHP6中實現了UMEditor富文本編輯器的圖片上傳功能。開發者可以透過類似的方法,實現其它富文本編輯器的圖片上傳功能。
以上是如何在ThinkPHP6中進行富文本編輯器圖片上傳操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!