سلام دوستان من در فرمی فایل آپلود میکنم که در فولدری به نام 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
داخل ویو از متد 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();
});
وقتی دستور را اعمال میکنم
این میاد و ایجاد نمیشه
@amirhossein.d.z
E:MyProjectmain>php artisan storage:link
The system cannot find the file specified.
The [public/storage] directory has been linked.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟