【问题标题】:Laravel 9: Can't write image data to pathLaravel 9:无法将图像数据写入路径
【发布时间】:2023-01-09 17:02:58
【问题描述】:

我正在使用 Laravel 9 制作一个论坛项目。

现在对于这个项目,我需要上传一些图片。

所以在控制器上,我添加了这个:

if($request->has('filep')){
    $files = $request->file('filep');
    foreach ($files as $file) {
          $this->uploadImage($file, $questionCreated->id, 'question_image');
    }
}

这是uploadImage方法:

public function uploadImage($request, $id, $type_image)
    {
        $imagesUrl = UploadFile::upload($request,"Question",$id);
        foreach ($imagesUrl['path'] as $path) {
            UploadedFile::create([
                'upf_object_id' => $id,
                'upf_object_type_id' => $this->objectTable('questions'),
                'upf_path' => $path['upf_path'],
                'upf_uploaded_as' => $type_image,
                'upf_dimension' => $path['upf_dimension'],
                'upf_type' => $imagesUrl['option']['upf_type'],
                'upf_category' => $imagesUrl['option']['upf_category'],
                'upf_mime_type' => $imagesUrl['option']['upf_mime_type'],
            ]);
        }
    }

如您所见,我正在调用一个名为的辅助类 (see_it_here)UploadFile及其upload方法:

public static function upload($file,$cat,$queid)
    {
        self::directoryType($file->getClientOriginalExtension());
        self::$mimeType = $file->getMimeType();
        self::$catType = $cat;
        self::$objId = $queid;
        $fileName = self::checkExistFile($file->getClientOriginalName());

        if (in_array($file->getClientOriginalExtension(), self::resizeable())) {
            $file->storeAs(self::route(), $fileName);
            self::resize($file, $fileName);
        }
        $file->storeAs(self::route(), $fileName);
        $file_name_hash = md5($fileName);
        return [
            "path" =>
                array_merge(self::$urlResizeImage, [[
                    "upf_path" => self::route() . $fileName,
                    "upf_dimension" => "fullsize"
                ]]),
            "option" => [
                "upf_object_id" => "",
                "upf_object_type_id" => "",
                "upf_type" => self::$typeFile,
                "upf_category" => self::$catType,
                "upf_mime_type" => self::$mimeType,
                'upf_file_name' => $fileName,
                'upf_file_hash' => $file_name_hash,
            ]
        ];
    }

现在问题来自resize使用图像干预调整大小的方法:

public static function resize($file, $fileName)
    {
        $path = self::route();
        foreach (self::size() as $key => $value) {
            $resizePath = self::route() . "{$value[0]}x{$value[1]}_" . $fileName;
            Image::make($file->getRealPath())
                ->resize($value[0], $value[1], function ($constraint) {
                    $constraint->aspectRatio();
                })
                ->save(storage_path($path));
            $urlResizeImage[] = ["upf_path" => $resizePath, "upf_dimension" => "{$value[0]}x{$value[1]}"];
        }
        self::$urlResizeImage = $urlResizeImage;
    }

和线->save(storage_path($path));返回此错误:

无法将图像数据写入路径 (C:\xampp\htdocs\forum\storage\upload/1401/10/images/questions/77)

我不知道这里到底发生了什么。

所以如果你知道,请告诉我...

我真的很感激你们的任何想法或建议。

这也是我的filesystems配置。

【问题讨论】:

    标签: php laravel filesystems laravel-9 laravel-storage


    【解决方案1】:

    确保您使用的保存图片的方式是正确的,并且聚焦在正确的区域。

    确保您用于存储图片方式的数据库字段具有正确的数据类型(例如文本或 varchar)并且足够长以存储整个方式。

    确认数据库已获得与您尝试保存图片的位置保持联系的必要许可。

    如果您使用的是 Web 应用程序,请确保图片格式经过适当编码,并且您使用的是正确的 URL 标点符号。

    如果您正在使用像 MySQL 这样的数据集管理系统 (DBMS),您可能需要使用像 mysql_real_escape_string() 这样的逃逸功能来准确地保存图片。

    确保您的 SQL 问题中没有标点错误。

    假设问题继续发生,请尝试通过打印图片方式和您正在使用的 SQL 问题来调查问题,将其保存到数据库中。这可以帮助您区分信息或查询的任何问题。

    【讨论】:

      猜你喜欢
      • 2020-03-29
      • 2020-05-07
      • 2016-07-24
      • 1970-01-01
      • 2015-11-06
      • 2017-01-25
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多