با سلام من ی مشکل در اپلود عکس در لاراول ۶ دارم . در ورژن های قبلی لاراول این مشکل نداشتم در لاراول ۶ این مشکل دارم
موقع اپلود این خطا رو میده
The "/tmp/phpRP3ebC" file does not exist or is not readable.
عکس اپلود میشه در پوشه .
public function upload($image){
$file_name = time()."-".$image->getClientOriginalExtension();
$year = Carbon::now()->year;
$month = Carbon::now()->month;
$path = public_path("/uploads/users/$year/$month/");
$image->move($path,$file_name);
return "/uploads/users/$year/$month/".$file_name;
}
ورژن php رو چک کنید و اگر احتمالا بخاطر اینکه لاراول 6 ورژن php رو افزایش دادید ایا تنظیمات مربوطه رو هم درست کردید ؟
و اینکه ایا یک ورژن پایینتر رو اگر نصب کنید مشکلی نداره ؟
ورژن PHP 7.2.19
تنظیمات مربوط به کجا؟؟
تو لارول ۵.۸ به درستی کار میکنه . فقط تو لاراول ۶ این بهم میده .
@hesammousavi
درود
کدهای قسمت آپلود شما مشکلی ندارند. میمونه ۱ مورد:
شما آرگومان اول یا همون image$ رو به چه صورتی بدست میارید و به متد upload پاس میدید؟
چنانچه از Input Facade استفاده میکنید احتمالا مشکل از همین مورده.
طبق مستندات لاراول ۶ چون این فِساد تکرار فساد Request بوده حذف شده ..
The Input facade, which was primarily a duplicate of the Request facade, has been removed. If you are using the Input::get method, you should now call the Request::input method. All other calls to the Input facade may simply be updated to use the Request facade.
https://laravel.com/docs/6.x/upgrade#the-input-facade
پس اگر در کدتون هر رفرنسی به کد های زیر هست:
Input::get('field')
Input::file('image')
// یا هر متد دیگه که از این فساد استفاده میکنه.
باید این موارد رو تغییر بدید و بجاش از کلاس "Illuminate\Http\Request" و یا از هلپر ()request استفاده کنید.. مثلا برای گزینه فایل:
$image = $request->file('image');
و یا
$image = $request->image;
علاوه بر ساده تر شدن کار برای دریافت آدرس و پسوند فایل به متد هایی زیر هم دسترسی دارید:
$path = $request->photo->path();
$extension = $request->photo->extension();
چک برای صحت انجام آپلود:
if ($request->file('image')->isValid()) {
// file is uploaded and available
}
علاوه بر این متد file در کلاس Request در واقع instance ی از کلاس "Illuminate\Http\UploadedFile" رو بر میگردونه که این کلاس دسترسی به متدهای بیشتری رو برای ما ممکن میکنه. کلاس UploadedFile در واقع مربوط به پکیج HttpFoundation فریمورک سیمفونی هست که لاراول هم ازش استفاده میکنه. در لینک زیر میتونید سایر متدهای موجود رو بررسی کنید:
https://github.com/symfony/symfony/blob/3.0/src/Symfony/Component/HttpFoundation/File/UploadedFile.php
موفق باشید
$file = $request->file('image');
$image = $this->upload($file);
auth()->user()->articles()->create(array_merge($request->all(),["image"=>$image]));
اینم کد های ارگومان تابع . از هلپر فانکشن request() استفاده کردم مشکل حل نشد . ولی عکس دخیره میشه تو پوشه ولی این خطا رو میده اجازه نمیده تو دیتایس اینسرت کنه . ورژن php به ۷.۳ تغیر دادم بازم حل نشد
خطا اینه
The "/tmp/phpgqnRgk" file does not exist or is not readable.
http://s4.picofile.com/file/8374947918/20191011_184532.jpg
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟