黑馬lavarel教程---7、文件上傳


黑馬lavarel教程---7、文件上傳

一、總結

一句話總結:

在laravel里面實現文件的上傳是很簡單的,壓根不用引入第三方的類庫,作者把上傳作為一個簡單的http請求看待的。

 

1、在lavarel中作者把文件上傳看做什么?

一個簡單的http請求

在laravel里面實現文件的上傳是很簡單的,壓根不用引入第三方的類庫,作者把上傳作為一個簡單的http請求看待的。

 

2、要想表單能夠上傳(此處不考慮異步方式),則表單應該具備哪些要求?

a. 具有form標簽,method必須為post,必須具備enctype屬性;
b. 至少有一個input類型為file類型; 得具備一個提交按鈕;

 

3、lavarel文件上傳錯誤狀態碼error的取值?

0-7,但是沒有5,0表示成功。

 

4、文件上傳的本質(核心思想)?

文件的移動,move_upload_file

 

5、文件上傳步驟?

a. 先去判斷文件是否正常和存在
b. 獲取相關的信息(可選)
c. 保存文件(其實就是移動文件到新的目錄)

 

6、關於項目中使用路徑的說明?

如果路徑是給php代碼使用的,則路徑建議使用“./”形式;如果路徑是給瀏覽器使用的則建議使用“/”形式。

 

 

7、獲取文件上傳錯誤提示的代碼示例?

$request -> file(‘avatar’) -> getErrorMessage();

 

 

 

二、文件上傳

在laravel里面實現文件的上傳是很簡單的,壓根不用引入第三方的類庫,作者把上傳作為一個簡單的http請求看待的。使用時可以參考手冊。

 

(1)修改表結構,添加一個字段。

ALTER TABLE `member`

ADD COLUMN `avatar`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `email`;

 

 

 

 

(2)創建添加數據的表單和路由

添加路由:/home/test/test14

 

 

 

 

創建展示視圖的方法並且展示視圖

 

 

 

 

創建視圖頁面並且添加csrf_token

回顧:要想表單能夠上傳(此處不考慮異步方式),則表單應該具備哪些要求?

答:

       a. 具有form標簽,method必須為post,必須具備enctype屬性;

       b. 至少有一個input類型為file類型;

       c. 得具備一個提交按鈕;

 

 

 

 

(3)在控制器中,添加上傳業務處理邏輯

【此處操作建議查看手冊】  

 

 

 

關於上傳錯誤狀態碼error的取值:0-7,但是沒有5,0表示成功。

 

問題:請你說出文件上傳的本質(核心思想)?文件的移動,move_upload_file

 

 

 

 

更多的方法請訪問:

http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html

 

思路:

         a. 先去判斷文件是否正常和存在

         b. 獲取相關的信息(可選)

         c. 保存文件(其實就是移動文件到新的目錄)

 

獲取文件的方式:既可以通過file方法來獲取也可以通過動態屬性來獲取,二選一。

 

(4)創建上傳文件的保存路徑

 

 

 

 

 

 

 

 

關於項目中使用路徑的說明:

如果路徑是給php代碼使用的,則路徑建議使用“./”形式;如果路徑是給瀏覽器使用的則建議使用“/”形式

 

為了保存的文件不被覆蓋,建議在保存文件的同時對文件名進行盡量唯一的重命名:

 

 

 

 

(5)注意:如果使用的是create方法添加數據到數據表中,則這里還要修改一下模型里面的一個fillable屬性,代表允許插入到數據庫的字段

 

 

 

 

將數據寫入數據表:

 

 

 

數據表的結果:

 

 

 

 

如果上傳出現了錯誤,一定要使用獲取錯誤信息的方法:

 

 

 

$request -> file(‘avatar’) -> getErrorMessage();

 

 

 

 

 

 

 

 

 


免責聲明!

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



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