首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在laravel 5.6中修复对null成员函数getClientOriginalExtension()的调用

在 Laravel 5.6 中修复对 null 成员函数 getClientOriginalExtension() 的调用的方法如下:

  1. 首先,需要确保你正在调用 getClientOriginalExtension() 函数的对象不为 null。可以通过使用条件语句或者 null 合并运算符来检查对象是否为 null。例如:
代码语言:php
复制
if ($request->file('file') !== null) {
    $extension = $request->file('file')->getClientOriginalExtension();
}

或者

代码语言:php
复制
$extension = $request->file('file')?->getClientOriginalExtension();
  1. 如果你确定对象不为 null,但仍然出现该错误,那么可能是由于文件上传失败导致的。你可以通过检查文件上传是否成功来解决该问题。例如:
代码语言:php
复制
if ($request->file('file')->isValid()) {
    $extension = $request->file('file')->getClientOriginalExtension();
}
  1. 如果以上方法仍然无法解决问题,那么可能是由于 Laravel 的文件上传配置问题导致的。你可以检查 config/filesystems.php 文件中的配置项是否正确。确保你正在使用正确的文件系统驱动程序,并且配置项中的路径和权限设置正确。
  2. 如果你仍然无法解决问题,那么可能是由于 Laravel 的版本不兼容或者存在 bug。你可以尝试升级 Laravel 版本或者在 Laravel 的官方论坛或者 GitHub 上搜索类似的问题,看看是否有其他开发者遇到过相同的问题并找到了解决方法。

总结起来,修复对 null 成员函数 getClientOriginalExtension() 的调用的方法包括检查对象是否为 null、检查文件上传是否成功、检查文件上传配置是否正确,以及升级 Laravel 版本或者寻求其他开发者的帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel5.8使用LayUI上传并显示图片操作

这个问题已经困扰好久了,唉 比较难受,本来学习laravel使用的是Bootstrap,之后用的是Uploadify进行上传图片,无奈,这个技术需要Flash的支持,一直没有实现,后来思考再三,还是选择用Layui后台框架进行设计,emm~~~毕竟用他的组件可以实现和Uploadify一样的无刷新上传图片的效果,但是比较难受的就是Laravel使用Layui进行回调函数显示图片的时候,Laravel总是莫名的增加了域名之外的控制器及方法名称,比较难受,不,是特别难受,从网上及QQ群大神中也没有问出个所以然,不过,我最后实现的是用的比较笨的方式,就是拼接为字符串的形式进行链接返回调用,(使用前台添加域名的方式实现了emm~~)好了 话不多说,看看实现的代码吧!

03

Android应用程序与SurfaceFlinger服务的连接过程分析

Android系统的开机动画是由应用程序bootanimation来实现的,它位于/system/bin目录下,它的具体实现可以参考Android系统的开机画面显示过程分析一文。为什么要选择Android系统的开机动画来分析Android应用程序与SurfaceFlinger服务的连接过程呢?首先,负责实现开机动画的应用程序bootanimation也是一个Android应用程序,只不过它是使用C++语言来开发的;其次,应用程序bootanimation是与UI相关的,即它与使用Java语言来开发的标准Android应用程序一样,都需要使用SurfaceFlinger服务来创建和渲染自己的Surface,即开机动画;第三,由于应用程序bootanimation不涉及用户输入,即不需要与用户进行交互(触摸屏、键盘等),因此它能够以最简洁的方式来体现Android应用程序与SurfaceFlinger服务的关系。

02

Resources和AssetManager创建过程

到这里AssetManager创建完毕。然后设置相关的路径 AssetManager assets = new AssetManager(); // resDir can be null if the 'android' package is creating a new Resources object. // This is fine, since each AssetManager automatically loads the 'android' package // already. if (resDir != null) { if (assets.addAssetPath(resDir) == 0) { return null; } } if (splitResDirs != null) { for (String splitResDir : splitResDirs) { if (assets.addAssetPath(splitResDir) == 0) { return null; } } } if (overlayDirs != null) { for (String idmapPath : overlayDirs) { assets.addOverlayPath(idmapPath); } } if (libDirs != null) { for (String libDir : libDirs) { if (libDir.endsWith(".apk")) { // Avoid opening files we know do not have resources, // like code-only .jar files. if (assets.addAssetPath(libDir) == 0) { Log.w(TAG, "Asset path '" + libDir + "' does not exist or contains no resources."); } } } } 接着就创建Resource对象 r = new Resources(assets, dm, config, compatInfo); 这里看到AssetManager保存到了Resources对象中。接着进入到Resources的构造方法中 public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config, CompatibilityInfo compatInfo) { mAssets = assets; mMetrics.setToDefaults(); if (compatInfo != null) { mCompatibilityInfo = compatInfo; } updateConfiguration(config, metrics); assets.ensureStringBlocks(); } 最后进入到updateConfiguration(Configuration config, DisplayMetrics metrics, CompatibilityInfo compat) mAssets.setConfiguration(mConfiguration.mcc, mConfiguration.mnc, locale, mConfiguration.orientation, mConfiguration.touchscreen, mConfiguration.densityDpi, mConfiguration.keyboard, keyboardHidden, mConfiguration.navigation, width, height, mConfiguration.smallestScreenWidthDp, mConfiguration.screenWidthDp, mConfiguration.screenHeightDp, mConfiguration.screenLayout, mConfiguration.uiMode, Build.VERSION.RESOURCES

05
领券