محمد
6 سال پیش توسط محمد مطرح شد
14 پاسخ

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

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

@saeedkarimi454
@hhp14111
@reza.kazemi


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 6 سال پیش مطرح شد
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.bayat 6 سال پیش مطرح شد
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'];
}

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

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


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

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


محمد
@man 6 سال پیش مطرح شد
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>

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

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


محمد
@man 6 سال پیش مطرح شد
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.bayat 6 سال پیش مطرح شد
0

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


محمد
@man 6 سال پیش مطرح شد
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


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

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

@ali.bayat


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

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


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

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

ٰ@juza666


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 6 سال پیش مطرح شد
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();

محمد
@man 6 سال پیش آپدیت شد
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


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

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