[英]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.