2016-03-16 144 views
0

我試圖將圖像保存到我的laravel應用程序中的文件夾。將圖像存儲到公用文件夾Laravel 5.1

,我發現了錯誤:

fopen(F:\blog\public/usr-data/photos): failed to open stream: Permission denied

這裏是它寫入該文件夾我的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

,但沒有喜悅嘗試 - 仍然是同樣的問題。

回答

0

編輯:這隻適用於Linux。我保留這個答案,以防有人在Linux機器上遇到同樣的問題。


試試這個:

php artisan cache:clear 

sudo chmod -R 777 app/storage 

composer dump-autoload 
+0

OP正在使用Windows,'chmod'是一個Linux命令。 –

+0

你是對的,沒有注意到'lcacls'指示正在使用窗戶。這個解決方案確實只適用於Linux。 – Adrenaxus

0

你需要建立一個storagepublic文件夾,然後將這些的人裏面的所有文件夾的權限寫作。使用右鍵單擊文件夾,轉到Properties並更改文件夾權限。

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

+0

我已經更新了整個應用程序中的所有安全配置文件,我仍然收到錯誤? –

0

而不是使用文件寫的,你也可以使用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; 
    } 
+0

感謝@suguna這工作,但它只能工作一次?我收到錯誤:未定義偏移量:1 –

相關問題