Это то, что у меня есть:
Таблица базы данных с именем lamanInformasi
, которая имеет следующие поля: id
, judul
, judul
, created_at
, updated_at
.
Это то, что я хочу:
Пользователь может загружать несколько файлов документов или изображений, а файлы будут храниться в базе данных. Имена файлов будут сохранены в поле isi
, и сами файлы будут сохранены в папке с именем propic
. Пользователь также может отображать все данные из базы данных на веб-сайте.
Это мои коды:
create.blade.php
<form action="lamanInformasiController@index" method="post" enctype="multipart/form-data"> <input type="file" name="image"><br /> <input type="submit" name="submit" value="Submit"> </form>
lamanInformasiController.php
public function index(Request $request) { $file = new file; if (Input::hasFile('image')) { $destinationPath = public_path().'/propic/'; $name = Input::file('image')->getClientOriginalName(); $extension = Input::file('image')->getClientOriginalExtension(); $file = Input::file('image')->move($destinationPath, $name . "." . $extension); } $file -> isi = $request->get($file); $file -> save(); $lamanInformasi = LamanInformasi::all(); return view('upload.index', compact('lamanInformasi')); }
index.blade.php
<table class="table table-striped table-bordered" border= "1px solid black"> <thead> <tr> <td>ID</td> <td>Judul</td> <td>Isi</td> <td>Created At</td> <td>Updated At</td> </tr> </thead> <tbody> @foreach($$lamanInformasi as $key => $value) <tr> <td>{{$value->id}}</td> <td>{{$value->judul}}</td> <td>{{$value->isi}}</td> <td>{{$value->created_at}}</td> <td>{{$value->updated_at}}</td> </tr> @endforeach </tbody> </table>
Когда я запускаю его, у меня есть эта ошибка:
ErrorException in ParameterBag.php line 90: array_key_exists(): The first argument should be either a string or an integer
У меня это в ParameterBag line 89-91
public function get($key, $default = null) { return array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default; }
Это мои вопросы:
Как исправить эту ошибку? Правильно ли я сделал код для загрузки файлов? Потому что я пробовал аналогичный код, и он не работает. благодаря
Есть несколько вещей, о которых вам нужно позаботиться. Попробуйте код, как показано ниже.
LamanInformasiController.php – имена контроллеров обычно капитализируются
class LamanInformasiController extends Controller { /** * @var LamanInformasi - include the use statement above for the model. */ protected $model; /** * Inject (model)LamanInformasi while instantiating the controller. * @param LamanInformasi $model */ public function __construct(LamanInformasi $model) { $this->model = $model; } public function index() { $lamanInformasi = $this->model->all(); return view('upload.index', compact('lamanInformasi')); } public function store(Request $request) { if (Input::hasFile('image')) { $destinationPath = public_path().'/propic/'; $name = Input::file('image')->getClientOriginalName(); $extension = Input::file('image')->getClientOriginalExtension(); $fileName = $name.'.'.$extension; //store the file in the $destinationPath $file = Input::file('image')->move($destinationPath, $fileName); //save a corresponding record in the database $this->model->create(['isi'=> $fileName]); //return success message } //return failure message } } //don't forget to include the use statement for Input or write \Input
Затем в вашем index.blade.php
<table class="table table-striped table-bordered" border= "1px solid black"> <thead> <tr> <td>ID</td> <td>Judul</td> <td>Isi</td> <td>Created At</td> <td>Updated At</td> </tr> </thead> <tbody> @foreach($lamanInformasi as $file) <tr> <td>{{$file->id}}</td> <td>{{$file->judul}}</td> <td>{{$file->isi}}</td> <td>{{$file->created_at}}</td> <td>{{$file->updated_at}}</td> </tr> @endforeach </tbody>
И ваше действие формы должно быть соответственно
<form action="/upload8" method="post" enctype="multipart/form-data"> <input type="file" name="image"><br /> <input type="submit" name="submit" value="Submit">
Это должно работать, но не проверено. Дайте мне знать, если в противном случае.