将图像存储到公用文件夹 Laravel 5.1


Storing image to Public folder Laravel 5.1

我正在尝试将图像保存到我的 laravel 应用程序中的文件夹中。

我收到错误:

fopen(F:''blog''public/usr-data/photos):无法打开流:权限被拒绝

这是我的 laravel 控制器,它正在写入此文件夹。

$error          = false;
$absolutedir    = public_path();
$dir            = '/usr-data/photos';
$serverdir      = $absolutedir.$dir;
$filename       = array();
foreach($_FILES as $name => $value) {
    $json           = json_decode($_POST[$name.'_values']);
    $tmp            = explode(',',$json->data);
    $imgdata        = base64_decode($tmp[1]);
    $fileAry = explode('.',$json->name);
    $extension = strtolower(end( $fileAry ));
    $fname          = $card->id.'.'.$extension;
    $handle         = fopen($serverdir,'w');
    fwrite($handle, $imgdata);
    fclose($handle);
    $filename[]     = $fname;
}

我试过使用

Icacls "F:''blog''public/usr-data/photos"/grant Everyone:(OI)(CI)F

但没有快乐 - 仍然是同样的问题。

您需要

设置对storagepublic文件夹以及这些文件夹中的所有文件夹的写入权限。右键单击文件夹,转到Properties并更改文件夹权限。

http://m.wikihow.com/Change-File-Permissions-on-Windows-7

编辑:这仅适用于 Linux。我保留这个答案,以防有人在 Linux 机器上遇到同样的问题。


试试这个:

 php artisan cache:clear 
 sudo chmod -R 777 app/storage 
 composer dump-autoload

除了使用文件写入,您还可以使用 Laravel 文件系统存储类。请尝试以下给出的示例。

$image represents the encoded image.
$Id represents the id of the user.

public function imageUpload($image, $Id)
   {
       //Decode base64 string to image
       $profile_image = 'image/jpeg;base64,' . $image;
       $new_data = explode(";", $image);
       $data = explode(",", $new_data[1]);
       $file = base64_decode($data[1]);
       $imageFileName = $Id . '.jpeg';
       $image_path = '/storage/' . $imageFileName;
       Storage::put($imageFileName, $file);
       return $image_path;
   }