注:設置默認值
答案(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立即自動加載文件。你怎麼看,這是最好的方式? –