راکت

خواندن فایل از storage

3 پاسخ

سلام دوستان من در فرمی فایل آپلود میکنم که در فولدری به نام documents در فولدر storage ساخته میشه
میخام این فایل در سمت view نمایش بدم اما لینک 404 میده

public function store(Request $request)
{            
$path = $request->file('path')->store('documents');

$uploads = new Upload();
$uploads->type = $request->type;
$uploads->person_id = $request->person_id;
$uploads->path = $path;
$uploads->save();

return redirect(route('uploads.index'));
}

اینم فایل ویو

@forelse($uploads as $upload)
<li><img src="{{ asset('storage/'.$upload->path) }}" alt="" title="" />{{ $upload->typeforUploadFile() }}</li>
@empty
<p>فایلی به ثبت نرسیده است.</p>
@endforelse

@hesammousavi
@saeedkarimi454
@hhp14111
@reza.kazemi
@ali.bayat

ثبت پرسش جدید

پاسخ‌ها

3
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

داخل ویو از متد asset() که استفاده کردید فولدر Public پروژه رو بر میگردونه.
بجاش از storage_path() استفاده کن

کافیه این دستور رو در ترمینال بزنید و اوکی میشه :

php artisan storage:link

در اینصورت مسیر storage/app/public لینک میشه به یه فولدر فرضی بنام storage در پابلیک
اما اگه از هاست اشتراکی استفاده میکنید نمیتونید دستور رو وارد کنید چون دسترسی شل ندارید برای همین باید یه روت برای storage بسازید تا آدرس ها رو هندل کنه به این شکل :

Route::get('storage/{filename}', function ($filename)
{
    $path = storage_path('public/' . $filename);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

اما اگه فایلهایی که آپ میکنید همه عکس هستن و از پکیج Intervention/image استفاده میکنید میتونید این روت رو راحتتر پیاده کنید :

Route::get('storage/{filename}', function ($filename)
{
    return Image::make(storage_path('public/' . $filename))->response();
});

شاید پاسخ شما همین‌جا باشد

محمد
محمد
@man

وقتی دستور را اعمال میکنم
این میاد و ایجاد نمیشه
@amirhossein.d.z

E:MyProjectmain>php artisan storage:link
The system cannot find the file specified.
The [public/storage] directory has been linked.

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

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