Просмотр исходного кода

feat(controllers): 更新图片处理逻辑,使用 Drive 生成签名 URL

wuyi 5 месяцев назад
Родитель
Сommit
5462c77bf9

+ 9 - 8
app/Controllers/Http/BannersController.ts

@@ -2,7 +2,7 @@ import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
 import Banner from 'App/Models/Banner'
 import PaginationService from 'App/Services/PaginationService'
 import { schema } from '@ioc:Adonis/Core/Validator'
-import FilesService from 'App/Services/FilesService'
+import Drive from '@ioc:Adonis/Core/Drive'
 
 export default class BannersController {
     private paginationService = new PaginationService(Banner)
@@ -11,13 +11,9 @@ export default class BannersController {
         await Promise.all(
             result.map(async (banner) => {
                 if (banner.img) {
-                    try {
-                        const url = new URL(banner.img)
-                        const filePath = url.pathname.replace(/^\//, '')
-                        banner.img = await FilesService.generateThumbnailUrl(filePath)
-                    } catch (e) {
-                        // ignore invalid url
-                    }
+                    const url = new URL(banner.img)
+                    const filePath = url.pathname.replace(/^\//, '')
+                    banner.img = await Drive.getSignedUrl(filePath)
                 }
             })
         )
@@ -41,6 +37,11 @@ export default class BannersController {
 
     public async show({ params }: HttpContextContract) {
         const banner = await Banner.findOrFail(params.id)
+        if (banner.img) {
+            const url = new URL(banner.img)
+            const filePath = url.pathname.replace(/^\//, '')
+            banner.img = await Drive.getSignedUrl(filePath)
+        }
         return banner
     }
 

+ 1 - 2
app/Controllers/Http/SeriesController.ts

@@ -4,7 +4,6 @@ import PaginationService from 'App/Services/PaginationService'
 import { schema } from '@ioc:Adonis/Core/Validator'
 import Decimal from 'decimal.js'
 import Drive from '@ioc:Adonis/Core/Drive'
-import FilesService from 'App/Services/FilesService'
 
 export default class SeriesController {
     private paginationService = new PaginationService(Series)
@@ -19,7 +18,7 @@ export default class SeriesController {
                 if (series.cover) {
                     const url = new URL(series.cover)
                     const filePath = url.pathname.replace(/^\//, '')
-                    series.cover = await FilesService.generateThumbnailUrl(filePath)
+                    series.cover = await Drive.getSignedUrl(filePath)
                 }
             })
         )