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

3 سال پیش توسط محمد مطرح شد
آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

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

@saeedkarimi454
@hhp14111
@reza.kazemi

آفلاین
user-avatar
علی بیات ( 439989 تجربه )
3 سال پیش
تخصص : توسعه دهنده ارشد وب

لینک کوتاه اشتراک گذاری

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
         ]);
    }
}
آفلاین
user-avatar
علی بیات ( 439989 تجربه )
3 سال پیش
تخصص : توسعه دهنده ارشد وب

لینک کوتاه اشتراک گذاری

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'];
}
آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
علی بیات ( 439989 تجربه )
3 سال پیش
تخصص : توسعه دهنده ارشد وب

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

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>
آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

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

آفلاین
user-avatar
علی بیات ( 439989 تجربه )
3 سال پیش
تخصص : توسعه دهنده ارشد وب

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

فایلم اینه

Route::group(['namespace' => 'Admin' , 'middleware' => ['auth:web' , 'checkAdmin'], 'prefix' => 'admin'],function (){
    $this->get('/panel' , '[email protected]');
    $this->post('/panel/upload-image' , '[email protected]');
    $this->resource('uploads' , 'UploadController');

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

@ali.bayat

آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

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

@ali.bayat

آفلاین
user-avatar
سیدعلی موسوی ( 142798 تجربه )
3 سال پیش
تخصص : سی شارپ و پی اچ پی

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

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

ٰ@juza666

آفلاین
user-avatar
علی بیات ( 439989 تجربه )
3 سال پیش
تخصص : توسعه دهنده ارشد وب

لینک کوتاه اشتراک گذاری

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();
آفلاین
user-avatar
محمد ( 19952 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

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

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.