FEATURE: allow multiple uploads

This commit is contained in:
Michal Kváček
2016-07-26 15:31:01 +02:00
parent bef37a5cce
commit 0d8148f22d
6 changed files with 63 additions and 70 deletions
+15 -12
View File
@@ -1,8 +1,8 @@
<?php <?php
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Http\Requests\UploadFileRequest;
use App\Models\File; use App\Models\File;
use App\Http\Requests\Request;
use Symfony\Component\HttpFoundation\File\Exception\FileException; use Symfony\Component\HttpFoundation\File\Exception\FileException;
class UploadFile extends Controller class UploadFile extends Controller
@@ -22,28 +22,31 @@ class UploadFile extends Controller
/** /**
* Uploads any file * Uploads any file
* *
* @param UploadFileRequest $request
*
* @return \Illuminate\Http\RedirectResponse * @return \Illuminate\Http\RedirectResponse
*/ */
public function postFile(UploadFileRequest $request) public function postFile(Request $request)
{ {
if (!$request->hasFile('file')) {
return $this->invalidUpload('noFileSpecified');
}
try { try {
$uploadedFile = $this->file->upload($request->file('file'), $request); $uploadedFiles = [];
$files = $request->all()['files'];
$successfullUploads = 0;
foreach ($files as $file) {
$uploadedFile = $this->file->upload($file, $request);
$successfullUploads++;
$uploadedFiles[] = $uploadedFile;
}
// we do not want to redirect // we do not want to redirect
if ($request->ajax()) { if ($request->ajax()) {
return $this->jsonResponse($uploadedFile); return $this->jsonResponse($uploadedFiles);
} }
// upload was not performed via ajax, redirect user // upload was not performed via ajax, redirect user
return redirect() return redirect()
->route('upload.overview', ['directory' => $request->directoryId]) ->route('upload.overview', ['directory' => $request->directoryId])
->with('success', trans('admin/fileManager.uploadSuccessfull')); ->with('success', trans_choice('admin/fileManager.uploadSuccessfull', $successfullUploads));
} catch (FileException $e) { } catch (FileException $e) {
return $this->invalidUpload('invalidFile'); return $this->invalidUpload('invalidFile');
} }
@@ -52,7 +55,7 @@ class UploadFile extends Controller
protected function invalidUpload($message) protected function invalidUpload($message)
{ {
return redirect() return redirect()
->route('upload.file') ->route('upload.overview')
->with('error', trans('admin/fileManager.' . $message)); ->with('error', trans('admin/fileManager.' . $message));
} }
+6 -2
View File
@@ -4,7 +4,7 @@ namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
abstract class Request extends FormRequest class Request extends FormRequest
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
@@ -13,7 +13,11 @@ abstract class Request extends FormRequest
*/ */
public function authorize() public function authorize()
{ {
return true; return true;
} }
public function rules()
{
return [];
}
} }
-14
View File
@@ -1,14 +0,0 @@
<?php
namespace App\Http\Requests;
class UploadFileRequest extends UploadRequest
{
/**
* @internal param array $rules
*/
protected function setRules()
{
$this->rules = ['file' => 'required'];
}
}
+38 -38
View File
@@ -1,41 +1,41 @@
<?php <?php
return [ return [
"createSubdirectoryFor" => "Vytvořit podadresář v :directory.", "createSubdirectoryFor" => "Vytvořit podadresář v :directory.",
"createdAt" => "Nahráno", "createdAt" => "Nahráno",
"description" => "Popis souboru", "description" => "Popis souboru",
"directories" => "Podadresáře v adresáři :directory", "directories" => "Podadresáře v adresáři :directory",
"directoryDescription" => "Popis", "directoryDescription" => "Popis",
"directoryHidden" => "Skrytý adresář", "directoryHidden" => "Skrytý adresář",
"directoryName" => "Jméno adresáře", "directoryName" => "Jméno adresáře",
"edit" => "Upravit soubor :name", "edit" => "Upravit soubor :name",
"editButton" => "Upravit", "editButton" => "Upravit",
"editDirectory" => "Upravit adresář", "editDirectory" => "Upravit adresář",
"editDirectorySuccess" => "Úspěšně uloženo", "editDirectorySuccess" => "Úspěšně uloženo",
"encoding" => "Kódování", "encoding" => "Kódování",
"fileDeleted" => "Soubor smazán", "fileDeleted" => "Soubor smazán",
"fileInfo" => "Informace", "fileInfo" => "Informace",
"fileSize" => "Velikost", "fileSize" => "Velikost",
"hash" => "Hash", "hash" => "Hash",
"invalidFile" => "Nahrávaný soubor nelze nahrát, z nějakého důvodu není validní.", "invalidFile" => "Nahrávaný soubor nelze nahrát, z nějakého důvodu není validní.",
"keywords" => "Klíčová slova (oddělena čárkou)", "keywords" => "Klíčová slova (oddělena čárkou)",
"mime" => "MIME typ", "mime" => "MIME typ",
"name" => "Jméno", "name" => "Jméno",
"newDirectory" => "Vytvořit nový adresář", "newDirectory" => "Vytvořit nový adresář",
"newDirectorySuccess" => "Nový adresář úspěšně vytvořen", "newDirectorySuccess" => "Nový adresář úspěšně vytvořen",
"newFile" => "Nový soubor", "newFile" => "Nový soubor",
"noFileSpecified" => "Nebyl zvolen žádný soubor k nahrávání", "noFileSpecified" => "Nebyl zvolen žádný soubor k nahrávání",
"noFiles" => "Žádný soubor nebyl nalezen", "noFiles" => "Žádný soubor nebyl nalezen",
"noSubdirectories" => "Žádné podadresáře", "noSubdirectories" => "Žádné podadresáře",
"originalFilename" => "Původní jméno", "originalFilename" => "Původní jméno",
"overview" => "Seznam všech souborů", "overview" => "Seznam všech souborů",
"parentDirectory" => "Rodičovský adresář", "parentDirectory" => "Rodičovský adresář",
"resolution" => "Rozlišení", "resolution" => "Rozlišení",
"rootDirectories" => "Kořenové adresáře", "rootDirectories" => "Kořenové adresáře",
"selectFile" => "Vybrat soubor", "selectFile" => "Vybrat soubor",
"subdirectoryExists" => "Adresář s tímto jménem tu již eixstuje", "subdirectoryExists" => "Adresář s tímto jménem tu již eixstuje",
"successfullyChanged" => "Úspěšně uloženo", "successfullyChanged" => "Úspěšně uloženo",
"updatedAt" => "Poslední změna", "updatedAt" => "Poslední změna",
"upload" => "Nahrát nový soubor", "upload" => "Nahrát nový soubor",
"uploadSuccessfull" => "Soubor úspěšně nahrán", "uploadSuccessfull" => "Soubor úspěšně nahrán|:count soubory úspěšně nahrány|:count souborů úspěšně nahráno",
"url" => "Veřejá URL", "url" => "Veřejá URL",
]; ];
+1 -1
View File
@@ -18,7 +18,7 @@ return [
'mime' => 'MIME type', 'mime' => 'MIME type',
'invalidFile' => 'The file you submitted is somehow not valid file!', 'invalidFile' => 'The file you submitted is somehow not valid file!',
'noFileSpecified' => 'You have not specified any file for upload', 'noFileSpecified' => 'You have not specified any file for upload',
'uploadSuccessfull' => 'Your file was successfully uploaded', 'uploadSuccessfull' => 'Your file was successfully uploaded|:count files successfully uploaded',
'selectFile' => 'Select file for upload', 'selectFile' => 'Select file for upload',
'name' => 'Name', 'name' => 'Name',
'keywords' => 'Keywords (comma separated)', 'keywords' => 'Keywords (comma separated)',
@@ -10,11 +10,11 @@
<label> <label>
@lang('admin/fileManager.selectFile') @lang('admin/fileManager.selectFile')
<input type="file" name="file" id="file" /> <input type="file" multiple name="files[]" id="file" />
@if (isset($errors) && $errors->has('file')) @if (isset($errors) && $errors->has('files[]'))
<div class="callout alert"> <div class="callout alert">
{{ $errors->first('file') }} {{ $errors->first('files[]') }}
</div> </div>
@endif @endif
</label> </label>