ОБНОВЛЕНО
Проблема 1 : Использование ключевых слов, уже использованных laravel, таких как Файл ,
Решение : переименуйте файл модели вместе с примером миграции: -
Файл модели: UploadedFile.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UploadedFile extends Model
{
protected $fillable = [
'filename',
'path'
];
protected $table = 'uploadedFiles';
}
Файл миграции: 2019_06_24_072153_create_uploaded_files_table.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUploadedFilesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('uploadedFiles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('filename');
$table->string('path');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('uploadedFiles');
}
}
Проблема 2 : символическая ссылка не создается в общей папке (настоятельно рекомендуется хранить файлы в папке хранения, а не просто в общем)
Решение : Удалите папку, уже созданную в качестве хранилища, и выполните эту команду
php artisan storage:link
Теперь в FileController это способ хранения нескольких изображений в папке хранения.и в базе данных: -
public function store(Request $request)
{
request()->validate([
'filename' => 'required',
]);
if($request->hasFile('filename')){
$files = $request->file('filename');
foreach($files as $file){
$filename = $file->getClientOriginalName();
Storage::disk('public')->put('files/'.$filename, File::get($file));
UploadedFile::create([
'filename' => $filename,
'path' => url('storage/files/'.$filename)
]);
}
}
return redirect('/file')->with('success', 'File Uploaded Successfully');
}
В блейд-файле простой путь вызова, потому что мы уже сохранили путь в базе данных
<img class="card-img-top" src="{{ $file->path }}">
После внесения всех изменений выполните следующие команды
composer update
php artisan config:cache
composer dumpa
php artisan migrate:refresh --seed
В случае, если вы используете Ubuntu, вам нужнодаю и разрешение
sudo chmod -R a+rwx /opt/lampp/htdocs/multifiles2/
chmod 777 /opt/lampp/htdocs/multifiles2/storage/logs/laravel-2019-06-24.log //In case if log file is not accessible