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

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

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

0

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

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

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

0

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

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

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

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

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

0

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

E:MyProjectmain>php artisan storage:link
The system cannot find the file specified.
The [public/storage] directory has been linked.
برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.