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

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

سلام دوستان من در فرمی فایل آپلود میکنم که در فولدری به نام 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


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

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


0

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

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 6 سال پیش آپدیت شد
0

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

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

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

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