簡體   English   中英

laravel上傳的圖像未添加到數據庫

[英]laravel uploaded image not adding to the database

我正在嘗試在laravel上上傳圖像,但有時無法在數據庫中設置圖像目標。

當我嘗試測試並回顯最終的圖像和鏈接目標時,一切工作正常,當我檢查圖像目標時,在我的目標文件夾中,圖像在那里,但是只有圖像不會在數據庫中設置。

我已經在數據庫中設置了這個字段

Name          Type           Collation         Attributes   Null    Default
avatarfull    varchar(500)   utf8_unicode_ci                 No       None

我將varchar增加到500,以防萬一。

在我的usercontroller上,我有這個用於存儲新用戶

    public function store() {
    $validator = Validator::make(Input::all(), [
        'photo'             => 'mimes:jpeg,bmp,png|max:1000'
    ]);

    if($validator->fails()) {
        return Redirect::route('admin.users.create')->withErrors($validator)->withInput();
    } else {
        if(Input::hasFile('photo')) {
            if(Input::file('photo')->isValid()) {
                $imagename = str_random(20) . '.' . Input::file('photo')->getClientOriginalExtension();
                $imagelocation = Input::file('photo')->move(base_path() . '/img', $imagename );
                $avatarfull = 'img/' . $imagename;
            } else {
                $avatarfull     = 'img/profile_default.png';
            }
        } else {
            $avatarfull     = 'img/profile_default.png';
        }

        $create = User::create([
            'avatarfull'    => $avatarfull,
        ]);

        if($create) {
            return Redirect::route('admin.users.index')
                ->with('success_message', 'New user is successfully created!');
        }
    }

}

因此,驗證器會檢查需要檢查的內容(如果圖像是該mime類型),並檢查圖像大小是否不超過1mb,就可以了。

進一步在輸入時檢查是否已將hasfile設置為要上傳,是否已將文件設置為要上傳,它將檢查文件是否有效,然后獲取圖像,將其重命名為隨機字符串,復制到正確的位置,並將$ avatarfull變量設置為正確的設置路徑它在數據庫中。

如果我

echo $avatarfull
or
print_r($avatarfull)
or
var_dump(Input::all())

我得到的所有數據都是正確的

var_dump顯示輸入字段的所有數據,還有laravel通常的后端操作,例如檢查文件類型,文件大小,將其存儲在臨時路徑中,將路徑移動到新位置。 一切正常。

如果我在末尾檢查$ avatarfull變量,則在我存儲新用戶$ avatarfull變量之前,它應該是正確的,如果上傳的圖像比它回顯的多

img/random10characterstring.jpg

檢查基本路徑圖像是否正確存儲並移至我的PC上的所需位置

/opt/lampp/htdocs/laravel/img/random10characterstring.jpg

結合使用link_to可以顯示url鏈接圖像的最終結果

localhost/laravel/img/random10characterstring.jpg

當然,在我的文件瀏覽器中檢查圖像確實存在於該路徑中。 因此laravel完成了上傳圖片的工作,將其重命名並移動到了所需的位置。

只有它不會在數據庫中設置該字段。 當我添加新用戶(這是用戶頭像的圖像字段)時,它將在數據庫中添加新用戶,並且我設置了數據庫中的所有字段,但我沒有設置數據庫中圖像的設置路徑。 由於某些原因,該字段保留為空白。

請檢查您的用戶模型中avatarfull是否在$ fillable數組中。 如果不是,則用戶模型批量分配保護將不允許通過Users::create(...)存儲數據。 如果您不想將avatarfull放入可填充數組中,則可以始終使用:

$user = new User;
$user->avatarfull = $avatarfull;
$user->save();

有關批量分配的更多信息,請參見: http : //laravel.com/docs/4.2/eloquent#mass-assignment

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM