من میخام برای یک کارمند جدولی داشته باشم که فایل هایی با پسوند doc و pdf را بتونم آپلود کنم.
برای migration و چگونگی آپلود این فایل ها باید چیکار کنم.
ممنون میشم راهنماییم کنیم.
ابتدا مایگریشن رو بسازید
php artisan make:migration create_docs_table --create=docs
متد up فایل مایگریشنتون باید چیزی شبیه زیر باشه البته میتونید فیلدهای دیگه هم اضافه کنید.
public function up()
{
Schema::create('docs', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->text('doc_path');
$table->timestamps();
});
}
برای آپلود فایل هم, وقتی از طریق فرم ارسال فایل رو فرستادید.. در کنترلرتون میتونید مثل زیر عمل کنید.
Class DocsController {
public function store(Request $rqst) {
$doc_path = $request->file('document')->store('documentations');
// document == esme input dar Form
// documentations == folderi ke file zakhire mishe
// $doc_path == esme file ke bayad dar Jadvale bala save konid.
Doc::create([]
'user_id' => auth()->user()->id,
'doc_path' => $doc_path
]);
}
}شاید پاسخ شما همینجا باشد
برای doc_path چطور فایل ذخیره میشه با مسیرش و فایل کجا پروژه من دایرکتوری ایجاد میکنه؟
@ali.bayat
@manvfx
داخل فولدر storage/app/documentations ذخیره میشند
من این ارور را دارم
FatalThrowableError (E_ERROR)
Call to a member function store() on null
اینم کد من:
public function store(Request $request)
{
$path = $request->file('document')->store('documents');
$upl->type = $request->type;
$upl->martyr_id = $request->person_id;
$upl->path = $request->path;
$upl->save();
return redirect(route('uploads.index'));
}
اینم کد ویو
<form action="{{route('uploads.store')}}" method="post" enctype="multipart/form-data" class="form-horizontal">
{{csrf_field()}}
@include('admin.section.errors')
<div class="form-group">
<div class="col-sm-3 col-md-3 col-xs-12">
<label for="type" class="control-label">نوع فایل</label>
<select name="type" class="form-control" id="type" title="نوع فایل را انتخاب کنید">
<option value="0">PDF</option>
<option value="1">Word (*.doc)</option>
<option value="2">متنی (*.txt)</option>
<option value="2">عکس</option>
<option value="2">ویدیو</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-3 col-md-3 col-xs-12">
<label for="status" class="control-label">لیست کارمندان</label>
<select name="person_id" class="form-control" id="person_id" title="انتخاب کارمند"> --}}
@foreach( $persons as $person )
<option value="{{ $person->id }}">{{ $person->firstName }} {{ $person->lastName }}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-6 col-md-6 col-xs-12">
<label for="path" class="control-label">فایل</label>
<input type="file" class="form-control" name="path" id="path" placeholder="فایل خود را وارد کنید">
</div>
</div>
<div class="form-group">
<div class="col-sm-3 col-md-3 col-xs-12">
<button type="submit" class="btn btn-success btn-sm">ذخیره چند رسانه ای</button>
</div>
</div>
</form>@ali.bayat
ارور بالا را دارم
مشکلم حل شد
فقط تنهای مشکل من در ذخیره هست که ارور زیر را دارم
ErrorException (E_WARNING)
Creating default object from empty value
public function store(Request $request)
{
$path = $request->file('path')->store('documents');
$upl->type = $request->type;
$upl->person_id = $request->person_id;
$upl->path = $request->path;
$upl->save();
}
اینم جدولم
Schema::create('uploads', function (Blueprint $table) {
$table->increments('id');
$table->integer('person_id')->unsigned()->nullable();
$table->string('type');
$table->text('path');
$table->timestamps();
$table->foreign('person_id')->references('id')->on('persons')->onDelete('cascade');
});
@saeedkarimi454
@hhp14111
@reza.kazemi
@viva.mohammadi
@mortezasb87
@hesammousavi
فایلم اینه
Route::group(['namespace' => 'Admin' , 'middleware' => ['auth:web' , 'checkAdmin'], 'prefix' => 'admin'],function (){
$this->get('/panel' , 'PanelController@index');
$this->post('/panel/upload-image' , 'PanelController@uploadImageSubject');
$this->resource('uploads' , 'UploadController');
داخلش هست درسته؟
من در یک منو کارمندان را وارد میکنم در یک منو دیگه فایل های مستندات مثل فیلم عکس و پی دی اف و ..
که نام منو چند رسانه ای هست مثل وردپرس کاربر اونجا نام کارمند را انتخاب میکنه و فایل های مربوط بهش را آپلود میکنه.
ممنون عزیز
میشه یک تکه کد بهم بگید
ممنون من جواب گرفتم. فقط یک نکته اینکه چوطر توی Blade نشان بدم؟
مثلا فایل عکسی که آپلود شده؟
چون بهم ارور 404 میده
چطور میتونم فایلی که در storage هست را فراخوانی کنم؟
این کد منه:
<ul class="list-unstyled">
@foreach($uploads as $upload)
<li><img src="{{ $upload->path }}" alt="">{{ $upload->typeforUploadFile() }}</li>
@endforeach
</ul>