大侠请留步,且看我这个怪异的文件上传:The file "/tmp/phpQYktzX" does not exist ???
问题描述
事情是这样的,我通过表单上传图片,得到了标题里的那个错误,但其实**文件已经上传成功**了,而且奇怪的地方在于我如果使用 `dd()` 方法查看的话是没问题的,不会报错。然后我把打印函数去掉,正常做路由跳转就会报错,下面给出比较详细的代码截图。
处理表单上传图片的代码
上图中打印的结果
高潮到了:如果我把第一张图里的打印函数都去掉,正常做路由跳转,则报错如下图
一直报错 `The file "/tmp/XXXXXX" does not exist` 。
ImageUploadHandler.php
```php
namespace App\Handlers;
class ImageUploadHandler
{
// 只允许以下后缀名的图片文件上传
protected $allowed_ext = ["png", "jpg", "gif", 'jpeg'];
public function save($file)
{
// 构建存储的文件夹规则
// 文件夹切割能让查找效率更高。
$folder_name = "uploads/images/" . date("Ym/d", time());
// 文件具体存储的物理路径,`public_path()` 获取的是 `public` 文件夹的物理路径。
$upload_path = public_path() . '/' . $folder_name;
// 获取文件的后缀名,因图片从剪贴板里黏贴时后缀名为空,所以此处确保后缀一直存在
$extension = strtolower($file->getClientOriginalExtension()) ?: 'png';
// 值如:14935210507BVc9v9ujP.png
$filename = time() . str_random(20) . '.' . $extension;
// 如果上传的不是图片将终止操作
if (!in_array($extension, $this->allowed_ext)) {
return false;
}
// 将图片移动到我们的目标存储路径中
$file->move($upload_path, $filename);
$imageSize = getimagesize($upload_path . '/' . $filename);
return [
'name' => $filename,
'path' => "/{$folder_name}/{$filename}",
'extension' => $extension,
'original_name' => $file->getClientOriginalName(),
'width' => $imageSize[0],
'height' => $imageSize[1],
];
}
}
```
补充描述
1. 我在本地是完全没有问题的,本地开发环境是 Homestead。
2. 服务器是 CentOS 7.4 版本。
3. PHP Version:7.2.6
4. Laravel Version:5.7.13
搞了好几个小时,没什么思路了,有大侠愿意帮忙分析一下吗?
如果缺少什么信息请留言,我会补充,谢谢!
2 Comments
冲你问题提的这么详尽 怎么也要回答下
但是我发现你已经解决了,T_T: https://laravel-china.org/topics/21019,不要意思,昨天晚上忙着调试问题去了