|
8 | 8 | use Illuminate\Validation\Rule; |
9 | 9 | use Illuminate\Support\Facades\DB; |
10 | 10 | use Illuminate\Support\Facades\Log; |
| 11 | +use Maatwebsite\Excel\Facades\Excel; |
11 | 12 | use Illuminate\Support\Facades\Cache; |
12 | 13 | use Illuminate\Support\Facades\Storage; |
13 | 14 | use NexaMerchant\Blog\Models\BlogArticle; |
|
16 | 17 | use NexaMerchant\Blog\Http\Requests\StoreBlogCategoryRequest; |
17 | 18 | use NexaMerchant\Blog\Http\Requests\UpdateBlogArticleRequest; |
18 | 19 | use NexaMerchant\Blog\Http\Requests\UpdateBlogCategoryRequest; |
| 20 | +use NexaMerchant\Blog\Import\ArticleImport; |
19 | 21 |
|
20 | 22 | class BlogController extends Controller |
21 | 23 | { |
@@ -314,11 +316,11 @@ public function recommendArticles(Request $request) |
314 | 316 | /** |
315 | 317 | * 从HTML内容中提取第一张图片URL |
316 | 318 | */ |
317 | | - private function extractFirstImageFromContent(string $content): ?string |
| 319 | + public function extractFirstImageFromContent(string $content): ?string |
318 | 320 | { |
319 | 321 | // 方案1:正则匹配(简单HTML内容) |
320 | 322 | preg_match('/<img[^>]+src="([^">]+)"/', $content, $matches); |
321 | | - $imageUrl = $matches[1] ?? null; |
| 323 | + $imageUrl = $matches[1] ?? ''; |
322 | 324 |
|
323 | 325 | // 方案2:DOM解析(更复杂的HTML) |
324 | 326 | /* |
@@ -768,4 +770,40 @@ public function batchDeleteCategory(Request $request) |
768 | 770 | } |
769 | 771 | }); |
770 | 772 | } |
| 773 | + |
| 774 | + public function articlesUpload(Request $request) |
| 775 | + { |
| 776 | + // return response()->json([ |
| 777 | + // 'success' => false, |
| 778 | + // 'message' => $request |
| 779 | + // ], 500); |
| 780 | + $this->validate(request(), [ |
| 781 | + 'file' => 'required|mimes:xls,xlsx', |
| 782 | + ]); |
| 783 | + |
| 784 | + // return response()->json([ |
| 785 | + // 'success' => false, |
| 786 | + // 'message' => dump($request) |
| 787 | + // ], 500); |
| 788 | + |
| 789 | + try { |
| 790 | + Excel::import(new ArticleImport, request()->file('file')); |
| 791 | + |
| 792 | + return response()->json([ |
| 793 | + 'success' => true, |
| 794 | + 'message' => '导入成功', |
| 795 | + ], 200); |
| 796 | + } catch (\Maatwebsite\Excel\Validators\ValidationException $e) { |
| 797 | + $failures = $e->failures(); |
| 798 | + return response()->json([ |
| 799 | + 'message' => 'Import failed due to validation errors.', |
| 800 | + 'errors' => $failures, |
| 801 | + ], 422); |
| 802 | + } catch (\Exception $e) { |
| 803 | + return response()->json([ |
| 804 | + 'message' => 'An error occurred during import.', |
| 805 | + 'error' => $e->getMessage(), |
| 806 | + ], 500); |
| 807 | + } |
| 808 | + } |
771 | 809 | } |
0 commit comments