راکت

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

10 پاسخ

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

php artisan storage:link

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

ثبت پرسش جدید

پاسخ‌ها

10
فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

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

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

در فایل 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

تخصص: برنامه نویس

سلام تو .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',
        ],
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

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

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

php artisan config:clear
php artisan optimize
ایرج حسین زاده
ایرج حسین زاده
@boyfly37

تخصص: برنامه نویس

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

ایرج حسین زاده
ایرج حسین زاده
@boyfly37

تخصص: برنامه نویس

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

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

@mhyeganeh

رضا جهانگیر
رضا جهانگیر
@rezajahangir

تخصص: Full-Stack Developer

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

\app\Providers\AppServiceProvider

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

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

موفق باشید.

ایرج حسین زاده
ایرج حسین زاده
@boyfly37

تخصص: برنامه نویس

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

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

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

php artisan storage:link
ایرج حسین زاده
ایرج حسین زاده
@boyfly37

تخصص: برنامه نویس

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

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

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