【问题标题】:Storing image to Public folder Laravel 5.1将图像存储到公共文件夹 Laravel 5.1
【发布时间】:2016-07-02 04:10:16
【问题描述】:

我正在尝试将图像保存到我的 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

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

【问题讨论】:

    标签: php laravel laravel-5.1


    【解决方案1】:

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

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

    【讨论】:

    • 我已经更新了整个应用程序的所有安全配置文件,但仍然出现错误?
    【解决方案2】:

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


    试试这个:

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

    【讨论】:

    • 你是对的,没有注意到lcacls表示正在使用windows。这个解决方案确实只适用于 Linux。
    【解决方案3】:

    除了使用文件写入之外,您还可以使用 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;
       }
    

    【讨论】:

    • 谢谢@suguna 这工作但是它只工作了一次?我得到错误:未定义的偏移量:1
    猜你喜欢
    • 2018-03-24
    • 2016-12-02
    • 2020-01-21
    • 2017-07-22
    • 2014-02-03
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多