当尝试使用Laravel移动文件(图像)时,我遇到了一个奇怪的问题:当我创建自定义Form请求类并通过验证后,我收到错误消息,但是文件定期移动。
这是我的控制人:
(...)
class ArticleController extends Controller{
public function store(StoreArticleRequest $request){
$article = new Article;
if ($request->hasfile('image')){
$name= rand(1, 10000).$request->file('image')->getClientOriginalName() ;
$move = $request->file('image')->move(public_path().'/images/articles/', $name);
$article->image = $name;
}
$article->title = request('title');
$article->preview = request('preview');
$article->text = request('content');
$article->user_id = \Auth::user()->id;
$article->source = request('source');
$article->save();
return view('admin.dashboard');
}
...这是表单请求类:
(...)
class StoreArticleRequest extends FormRequest{
public function authorize(){
return true;
}
public function rules(){
return [
'title' => 'required|unique:articles',
'source' => 'required',
];
}
public function messages(){
return [
'title.required' => 'foo',
'title.unique' => 'bar',
'source.required' => 'baz',
];
}
}
这样,尽管尽管文件已移至所需位置,但我仍收到错误消息:
Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException
The file "/tmp/php9lQ7wd" does not exist
如果我使用相同的代码,但是如果在ArticleController中更改store方法的参数,则不会出现错误,并且文件可以正常移动:
public function store(Request $request){
(...the rest of the code in this method is exactly the same...)
我做错什么了吗? 有没有办法来解决这个问题? TIA,奥格恩
* Laravel版本:5.7
更新:已解决
没有任何奇怪的Laravel行为,只是缺乏我的专注。 问题是我忘记将以下行添加到存储方法中(使用StoreArticleRequest时):
$validated = $request->validated();