laravel中的文件上傳到本地+七牛雲上傳


 

首先在filesystems.php 配置好上傳的文件的目錄起名為upload

Storage/目錄下面

目錄下面的app/upload 如果沒有這個文件會自動創建

 

 

 這里的名字upload名字是跟控制器中的保存代碼對應的名字是一樣的

$bool= Storage::disk('upload')->put($filename,file_get_contents($path));

(2)寫一個form表單里面input的類型為file

文件上傳不能忘了表單提交里面要加這個

 
        
enctype="multipart/form-data"

 

這是模板的部分

 
        
<form action="/user/1/store" method="POST" enctype="multipart/form-data"> {{csrf_field()}} <input type="file" name="file" id="file" />


<input type="submit" value="提交修改">
</form>

 

路由
 
         
         
        
Route::post('user/{user}/store','\App\Http\Controllers\UserController@updateStore');
 
        

 


控制器
 
         
use Illuminate\Support\Facades\Storage;


public
function updateStore(Request $request) { $wenjian= $request->file('file'); if ($wenjian->isValid()) { //獲取文件的原文件名 包括擴展名 $yuanname= $wenjian->getClientOriginalName(); //獲取文件的擴展名 $kuoname=$wenjian->getClientOriginalExtension(); //獲取文件的類型 $type=$wenjian->getClientMimeType(); //獲取文件的絕對路徑,但是獲取到的在本地不能打開 $path=$wenjian->getRealPath(); //要保存的文件名 時間+擴展名 $filename=date('Y-m-d-H-i-s') . '_' . uniqid() .'.'.$kuoname; //保存文件 配置文件存放文件的名字 ,文件名,路徑 $bool= Storage::disk('upload')->put($filename,file_get_contents($path)); return back(); } }

 

默認的文件上傳大小為2M 需要自己到php的文件夾下的php.ini

里面的post_max_size=2M 修改下並且重啟阿帕奇

還有upload_max_filesize=2M


然后目錄下圖片就會出來了

 

 七牛雲
composer require itbdw/laravel-storage-qiniu
 
        
config/app.php 里面的 providers 加上一行  itbdw\QiniuStorage\QiniuFilesystemServiceProvider::class,

config/filesystems.php 里面的 disks數組加上

 'qiniu' => [
            'driver'    => 'qiniu',
            'domain'    => '88888888.bkt.clouddn.com',  //你的七牛域名
            'access_key'=> '',    //AccessKey
            'secret_key'=> '',   //SecretKey
            'bucket'    => 'wl11',    //Bucket名字你的儲存空間的名字
        ],

 

 
        
 只要把disk('qiniu')改一下就OK了
然后控制器的代碼還是一樣的

 

 
        
上傳OK!



 但是文件上傳到本地了之后我想要獲取怎么辦昵?直接獲取stroage目錄下,是獲取不到的,只能獲取到public目錄下

這時候就需要在public目錄下創建一個軟連接到stroage/public這個目錄下

用composer的命令

php artisan storage:link

 

 

 

這是時候public目錄下就會出現一個超鏈接,這里面的內容是和storage/public目錄下的內容是一樣的

 

這樣就可以輕松獲取到了

 

但是在服務器上面你把這個軟連接上傳上去,centos不同步strange目錄下的文件,

於是我重新執行了一下

php artisan storage:link
卻發現一個問題就是提示我這個軟鏈接已經存在,然后我把這個軟鏈接刪除了,從新執行,composer卻報錯了,我猜就是權限的問題,於是我就直接在public目錄下創建一個軟鏈接
建立軟鏈接:ln -s /www/wwwroot/122.114.111.77/storage/app/public

 

然后再ll一下public目錄

然后你把原來的strage改成public就ok了

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM