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

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

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

php artisan storage:link

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


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

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


محمدحسن یگانه
محمدحسن یگانه
تخصص :Full-Stack Web Developer Freelancer
@mhyeganeh4 سال پیشمطرح شد
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);

ایرج حسین زاده
ایرج حسین زاده
تخصص :برنامه نویس
@boyfly374 سال پیشمطرح شد
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 Freelancer
@mhyeganeh4 سال پیشمطرح شد
0

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

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

php artisan config:clear
php artisan optimize

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

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


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

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

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

@mhyeganeh


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

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

\app\Providers\AppServiceProvider

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

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

موفق باشید.


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

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


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

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

php artisan storage:link

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

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


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

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