Thinkphp5+Layui异步Ajax上传文件报错的原因

原因1:检测$file = request()->file('file');这个$file里面是否获取到了值,没有值的话下面无论执行什么文件操作都会报错。

原因2:上传了中文命名的文件!!!!!如果你上传的文件有中文命名,就不需要再试了,会一直报“网络异常”错误的。不信你就手动的修改为英文命名的文件试一下。

检测文件名中是否包含中文的表达式:

preg_match("/([\x81-\xfe][\x40-\xfe])/", $name, $match)

//$name就是文件名——那个$match我也不知道要干什么。

解决方案1:给出错误提示,中止上传

$file = request()->file('file');
$path = ROOT_PATH . 'public' . DS;
$name=$file->getInfo()['name'];
if(preg_match("/([\x81-\xfe][\x40-\xfe])/", $name, $match)){
  return error("不允许上传含有中文命名的文件!");
}

解决方案2:按照自己的喜好重新命名文件即可。 

$newname = date('Ymds',time())."_".rand(1,9);

//这里竟然不需要加扩展名我也不知道为什么。

 

你可能感兴趣的:(ThinkPHP学习)