راکت
محمد
محمد
توسط محمد مطرح شد
14 پاسخ

چگونگی آپلود فایل های داکیومنت

من میخام برای یک کارمند جدولی داشته باشم که فایل هایی با پسوند doc و pdf را بتونم آپلود کنم.
برای migration و چگونگی آپلود این فایل ها باید چیکار کنم.
ممنون میشم راهنماییم کنیم.

@saeedkarimi454
@hhp14111
@reza.kazemi


ثبت پرسش جدید
علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
0

ابتدا مایگریشن رو بسازید

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
         ]);
    }
}

علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
0

اگر از متد ()create استفاده کردید یادتون باشه داخل Model , خاصیت fillable رو هم تنظیم کنید که به ارور Mass Assignment برنخورید.

فایل مدل Doc:

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Doc extends Model
{
    protected $fillable = ['user_id','doc_path'];
}

محمد
محمد
@man7 سال پیشمطرح شد
0

برای doc_path چطور فایل ذخیره میشه با مسیرش و فایل کجا پروژه من دایرکتوری ایجاد میکنه؟
@ali.bayat


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
0

@manvfx
داخل فولدر storage/app/documentations ذخیره میشند


محمد
محمد
@man7 سال پیشمطرح شد
0

من این ارور را دارم

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>

محمد
محمد
@man7 سال پیشمطرح شد
0

@ali.bayat
ارور بالا را دارم


محمد
محمد
@man7 سال پیشمطرح شد
0

مشکلم حل شد
فقط تنهای مشکل من در ذخیره هست که ارور زیر را دارم

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


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
0

فایل route/web.php رو چک کردی؟


محمد
محمد
@man7 سال پیشمطرح شد
0

فایلم اینه

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');

داخلش هست درسته؟

@ali.bayat


محمد
محمد
@man7 سال پیشمطرح شد
0

من در یک منو کارمندان را وارد میکنم در یک منو دیگه فایل های مستندات مثل فیلم عکس و پی دی اف و ..
که نام منو چند رسانه ای هست مثل وردپرس کاربر اونجا نام کارمند را انتخاب میکنه و فایل های مربوط بهش را آپلود میکنه.

@ali.bayat


سیدعلی موسوی
سیدعلی موسوی
تخصص :سی شارپ و پی اچ پی
@juza667 سال پیشمطرح شد
0

محمد جان میگه value خالیه
وقتی از resource در روت استفاده میکنی باید مشخص کنی براش که میخوای از متد store استفاده کنی یعنی put,patch


محمد
محمد
@man7 سال پیشمطرح شد
0

ممنون عزیز
میشه یک تکه کد بهم بگید

ٰ@juza666


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
0

@manvfx

توی کنترلر اول باید کلاس رو instantiate کنی بعد مقداردهی و ذخیره کنی

$upl = new App\Upload;
//  (Upload esme model hast)

$upl->type = $request->type;
$upl->person_id = $request->person_id;
$upl->path = $request->path;
$upl->save();

محمد
محمد
@man7 سال پیشمطرح شد
0

ممنون من جواب گرفتم. فقط یک نکته اینکه چوطر توی Blade نشان بدم؟
مثلا فایل عکسی که آپلود شده؟
چون بهم ارور 404 میده
چطور میتونم فایلی که در storage هست را فراخوانی کنم؟
این کد منه:

<ul class="list-unstyled">
@foreach($uploads as $upload)
<li><img src="{{ $upload->path }}" alt="">{{ $upload->typeforUploadFile() }}</li>
@endforeach
</ul>

@ali.bayat
@juza666
@hesammousavi


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام