laravel 上传的图片没有添加到数据库
laravel uploaded image not adding to the database
我正在尝试在 laravel 上上传图片,但有时无法在数据库中设置图片目标。
当我尝试测试并回显最终图像和 link 目标时,一切正常,当我检查图像目标时,我的目标文件夹中有图像,但只有图像不会在数据库中设置。
我在数据库中设置了这个字段
Name Type Collation Attributes Null Default
avatarfull varchar(500) utf8_unicode_ci No None
为了以防万一,我将 varchar 增加到 500。
在我的用户控制器上,我有这个用于存储新用户
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,那么就可以了。
进一步检查输入是否为上传设置了文件,如果文件设置为上传,它检查文件是否有效,然后获取图像,将其重命名为随机字符串,复制到适当的位置并设置 $avatarfull 变量在数据库中设置它的正确路径。
如果我
echo $avatarfull
or
print_r($avatarfull)
or
var_dump(Input::all())
我得到的所有数据都是正确的
var_dump 显示输入字段的所有数据,还有 laravel 常用的后端功能,例如检查文件类型、文件大小、将其存储在临时路径中、将路径移动到新位置.一切正常。
如果我在最后检查 $avatarfull 变量,就在我存储新用户之前 $avatarfull 变量是它应该的,如果图像已上传而不是回显
img/random10characterstring.jpg
检查基本路径图像是否已正确存储并移动到我电脑上的所需位置
/opt/lampp/htdocs/laravel/img/random10characterstring.jpg
结合使用 link_to 它显示 url linked 图像
的最终结果
localhost/laravel/img/random10characterstring.jpg
当然,在我的文件浏览器中检查图像确实存在于该路径中。所以 laravel 完成上传图片、重命名并移动到所需位置的工作。
只是它不会在数据库中设置字段。当我添加新用户(这是用户头像的图像字段)时,它会在数据库中添加新用户,并且我设置了数据库中的所有字段,除了我没有设置数据库中图像的路径。由于某种原因,此字段留空。
请检查 avatarfull 是否在您的用户模型的 $fillable 数组中。如果不是 Users 模型批量分配保护将不允许按 Users::create(...)
存储数据。
如果你不想把 avatarfull 放在 fillable 数组中,你总是可以使用:
$user = new User;
$user->avatarfull = $avatarfull;
$user->save();
有关批量分配的详细信息,请参阅:http://laravel.com/docs/4.2/eloquent#mass-assignment
我正在尝试在 laravel 上上传图片,但有时无法在数据库中设置图片目标。
当我尝试测试并回显最终图像和 link 目标时,一切正常,当我检查图像目标时,我的目标文件夹中有图像,但只有图像不会在数据库中设置。
我在数据库中设置了这个字段
Name Type Collation Attributes Null Default
avatarfull varchar(500) utf8_unicode_ci No None
为了以防万一,我将 varchar 增加到 500。
在我的用户控制器上,我有这个用于存储新用户
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,那么就可以了。
进一步检查输入是否为上传设置了文件,如果文件设置为上传,它检查文件是否有效,然后获取图像,将其重命名为随机字符串,复制到适当的位置并设置 $avatarfull 变量在数据库中设置它的正确路径。
如果我
echo $avatarfull
or
print_r($avatarfull)
or
var_dump(Input::all())
我得到的所有数据都是正确的
var_dump 显示输入字段的所有数据,还有 laravel 常用的后端功能,例如检查文件类型、文件大小、将其存储在临时路径中、将路径移动到新位置.一切正常。
如果我在最后检查 $avatarfull 变量,就在我存储新用户之前 $avatarfull 变量是它应该的,如果图像已上传而不是回显
img/random10characterstring.jpg
检查基本路径图像是否已正确存储并移动到我电脑上的所需位置
/opt/lampp/htdocs/laravel/img/random10characterstring.jpg
结合使用 link_to 它显示 url linked 图像
的最终结果localhost/laravel/img/random10characterstring.jpg
当然,在我的文件浏览器中检查图像确实存在于该路径中。所以 laravel 完成上传图片、重命名并移动到所需位置的工作。
只是它不会在数据库中设置字段。当我添加新用户(这是用户头像的图像字段)时,它会在数据库中添加新用户,并且我设置了数据库中的所有字段,除了我没有设置数据库中图像的路径。由于某种原因,此字段留空。
请检查 avatarfull 是否在您的用户模型的 $fillable 数组中。如果不是 Users 模型批量分配保护将不允许按 Users::create(...)
存储数据。
如果你不想把 avatarfull 放在 fillable 数组中,你总是可以使用:
$user = new User;
$user->avatarfull = $avatarfull;
$user->save();
有关批量分配的详细信息,请参阅:http://laravel.com/docs/4.2/eloquent#mass-assignment