注:设置默认值
答案(S)下面反映的2009年旧浏览器的状态,现在你可以通过JavaScript在实际设置文件输入元素的值2017年
见这个问题的详细信息,答案以及演示:
How to set file input value programatically (i.e.: when drag-dropping files)?
我知道这个问题是重复的,但我想,也许someo ne可以帮助我。
让我先问问题。
我有一个表格来更新某些字段:姓名,秩序,公共,pathheader和pathhome和我的问题是这样的:
这是可能的更新形式,在pathheader和pathhome相同的值并且不点击输入类型文件再次?
输入类型的文件看起来像在这里:
@if (Storage::disk('projects')->has($project->slug))
<img src="{{ asset('/storage/projects/'.$project->slug.'/header.png') }}" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
@else
<img src="" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
@endif
<input type="file" name="pathheader" id="pathheader" class="form-control-file" aria-describedby="fileHelp" style="display:none;">
所以,当我渲染视图,它显示我认为这是不实际的找到它的服务器,然后再次单击它的图片,如果你不想要改变它。
让我知道你的意见,如果有人知道如何做到这一点,我将不胜感激。 (如果知道如何使用一些图书馆或其他功能做到这一点,让我知道它
非常感谢
解决
更简单的方法:。请在控制器不需要数据
。内功能:
public function updateProject(Request $request, $id)
{
$this->validate($request, array(
'slug'=> 'required',
'order'=> 'required',
'public'=> 'required'
));
$project = Project::find($id);
$project->slug = $request->input('slug');
$project->order = $request->input('order');
$project->public = $request->input('public');
if ($request->hasFile('pathheader')){
$project->pathheader = $request->file('pathheader');
\Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.png');
}
if ($request->hasFile('pathhome')){
$project->pathhome = $request->file('pathhome');
\Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.png');
}
$project->save();
return redirect()->route('admin.projects.show', $project->id);
}
我希望你已经看到了这一点:https://stackoverflow.com/q/1696877/5894241 – Nisarg
无法更新的形式。您更新数据库中的__record__。如果某个字段的值是__not provided__ - 则不需要更新此字段。 –
嗨@NisargShah首先感谢您的快速回答,我已经看到了这一点。而且我看到或许更好的方法是使用JS立即自动加载文件。你怎么看,这是最好的方式? –