EpisodesBatchUploadController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Admin\Controllers\Episode;
  3. /*设置内存 保证上传到 OSS*/
  4. ini_set ('memory_limit', '512M');
  5. use App\Admin\Actions\Grid\BatchEditEpisode;
  6. use App\Models\Episode;
  7. use App\Models\EpisodesList;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Layout\Content;
  11. use Dcat\Admin\Show;
  12. use Dcat\Admin\Http\Controllers\AdminController;
  13. class EpisodesBatchUploadController extends AdminController
  14. {
  15. private $id = null;
  16. public function index(Content $content, $id = 0)
  17. {
  18. $this->id = $id;
  19. $episode = Episode::find($id);
  20. $form = $this->form();
  21. return $content
  22. ->title($episode->name)
  23. ->breadcrumb(
  24. ['text' => $episode->name, 'url' => "/episodes/{$episode->id}/lists"],
  25. ['text' => '剧集上传'],
  26. )
  27. ->body($form)
  28. ->description('剧集上传');
  29. }
  30. public function store($id = 0)
  31. {
  32. $req = request()->post();
  33. $form = new Form();
  34. $response = $form->response();
  35. if(isset($req['lists']) && empty($req['lists'])) {
  36. return $response->error('请上传剧集');
  37. }else if(!isset($req['lists'])){
  38. return $this->form()->store();
  39. }
  40. $lists = explode(',',$req['lists']);
  41. $sort = EpisodesList::where('episodes_id',$id)->max('sort');
  42. foreach ($lists as $list)
  43. {
  44. $episode = new EpisodesList();
  45. $episode->episodes_id = $id;
  46. $episode->sort = ++$sort;
  47. $episode->url = $list;
  48. $episode->save();
  49. }
  50. return $response->success(__('admin.save_succeeded'))
  51. ->redirect(admin_url("/episodes/{$id}/lists"));
  52. }
  53. public function form()
  54. {
  55. $id = $this->id;
  56. return new Form(new EpisodesList(), function (Form $form) use ($id) {
  57. $form->action(admin_url("/episodes/batch/{$id}/upload"));
  58. $form->tools(
  59. function (Form\Tools $tools) {
  60. $tools->disableList();
  61. }
  62. );
  63. $form->disableHeader();
  64. $form->disableCreatingCheck();
  65. $form->disableEditingCheck();
  66. $form->disableViewCheck();
  67. $form->multipleFile('lists', '剧集')
  68. ->mimeTypes('video/*')
  69. ->chunkSize(4096)
  70. ->maxSize(1024 * 1024)
  71. ->saveFullUrl()
  72. ->uniqueName()
  73. ->autoUpload()
  74. ->autoSave(false)
  75. ->removable(false)
  76. ->required();
  77. $form->saved(function (Form $form) use ($id) {
  78. return $form
  79. ->response()
  80. ->success(trans('admin.update_succeeded'))
  81. ->redirect(admin_url("/episodes/{$id}/lists"));
  82. });
  83. });
  84. }
  85. }