ایرج حسین زاده
3 سال پیش توسط ایرج حسین زاده مطرح شد
10 پاسخ

ذخیره تصویر در لاراول

من تو لوکال آپلود میتونم بکنم بدون هیچ مشکلی حالا تو هاست اومدم تصویر تو دیتا ذخیره میشه ولی میره قسمت
storage>>app
و منم کد

php artisan storage:link

رو زدم storage
داخل public هست مشکل اینه عکسه تو قسمت app ذخیره میشه ولی تو قسمت public نیست


ثبت پرسش جدید
فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 3 سال پیش مطرح شد
0

با سلام و وقت بخیر دوست گرامی
لطف بفرمایید کدی که برای آپلود نوشتید بذارید تا بیشتر بشه راهنماییتون کرد
با تشکر


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
0

در فایل config/filesystems.php می‌تونید تعیین کنید که disk پیش فرضتون چی باشه تا اگر موقع استفاده از Storage بصورت خاص تعیین نکردید از اون استفاده کنه. هر یک از این گزینه ها هم یک root جداگانه دارند. گزینه های اضافه تر هم می‌تونید خودتون اضافه کنید:

'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        //...

    ],

حالا احتمالا قضیه ای که اتفاق افتاده این هست که حالت disk پیش فرض شما در نسخه لوکال روی public تنظیم شده ولی برای نسخه بارگزاری شدتون مقدار local تنظیم شده. به همین خاطر مقصد بارگزاری فایل هاتون با هم فرق دارند. ( به مقدار FILESYSTEMDISK در فایل env. تون هم توجه کنید)
یک راهکار دیگه هم این هست که موقع استفاده از Storage Facade بصورت خاص disk و محل قرارگیری تون رو تعیین کنید:

Storage::disk('public')->put('file.jpg', $contents);

ایرج حسین زاده
تخصص : برنامه نویس
@boyfly37 3 سال پیش مطرح شد
0

سلام تو .env

FILESYSTEM_DRIVER=local

و
filesystem

  'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

احساس می‌کنم پیام قبلیم رو درست نخوندید...!
الان دقیقا داره درست رفتار میکنه. چون آدرس اصلی local اگر دقت کنید برابر با storage_path('app') تعریف شده. اگر میخواید بجای پوشه app داخل app->public قرار بگیره در فایل env. مقدار local رو تغییر بدید به public.

بعد از اعمال تغییرات اگر قبل کانفیگ هاتون رو cache کردید لازمه که با یکی از دستورات زیر کش رو پاک کنید تا تغییرات اعمال بشن:

php artisan config:clear
php artisan optimize

ایرج حسین زاده
تخصص : برنامه نویس
@boyfly37 3 سال پیش مطرح شد
0

سلام
ممنون بابت پاسختون ولی حالا مشکل اینه که این میره تو قسمت
storage>>public>>public
ذخیره میکنه


ایرج حسین زاده
تخصص : برنامه نویس
@boyfly37 3 سال پیش آپدیت شد
0

سلام
درست ذخیره میکنه مشکل اینه که اون لینکه که باید کار کنه نمیکنه در کل عکس ذخیره میشه باید او عکس تو publichtml باشه نیست همین

من تو env
قسمت
FILESYSTEMDRIVER=public
بازم مشکل حل نشده

@mhyeganeh


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش مطرح شد
0

سلام.
به مسیر زیر برین:

\app\Providers\AppServiceProvider

و به متد register کد زیر رو اضافه کنید.

$this->app->bind('path.public', function() {
    return base_path('../public_html');
});

موفق باشید.


ایرج حسین زاده
تخصص : برنامه نویس
@boyfly37 3 سال پیش مطرح شد
0

سلام
ممنون از پاسختون ولی این کد زمانی کار میکنه که عکس ذخیره شده به public لینک بشه و ما اینو بهش بدیم تا تو public_html کار کنه سوال من اینه عکس من تو storage>>app>>public ذخیره میشه ولی لینک نمیشه به public و public_html


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

یعنی چی لینک نمیشه به public؟ دستور storage:link رو اجرا کردید؟

php artisan storage:link

ایرج حسین زاده
تخصص : برنامه نویس
@boyfly37 3 سال پیش مطرح شد
0

سلام
چون تو لوکال زده بودم بود تو هاست وقتی هم میزنم میگه بزای شما ایجاد شده حتی پاکشم کردم دوباره دستور رو زدم خطا گرفت


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

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