我試圖讓我的應用程序上傳文件到「public/uploads/documentos/{the-id}」,但無法弄清楚我當前的設置有什麼問題。現在,如果我上傳一個名爲「myfile.pdf」的文件,它會創建一個名爲「myfile.pdf」的文件夾,並在其中創建一個* .tmp文件。在我的數據庫中,「{the-id} /myfile.pdf」被保存爲文件url,但是這會將我帶到文件夾視圖,當我想要的是在文件內部看到文件時。Laravel文件上傳創建臨時文件的文件夾
如何更改它,以便在上傳文檔時,直接在「public/uploads/documentos/{the-id}」下創建文件「myfile.pdf」,以便我可以像這樣訪問它? {the-id}是根據患者ID創建的文件夾,因此屬於它們的所有文檔都保存在同一個文件夾中。
控制器
public function store(Request $request)
{
$this->validate($request, [
'tipo' => 'required|max:100',
'descripcion' => 'max:200',
'fecha_documento' => 'max:20',
'archivo' => 'required|mimes:doc,docx,pdf,jpg,png,jpeg',
'mascota_id' => 'required',
'mascota_num' => 'required',
]);
$documento = new Documento;
$documento->mascota_num = $request->input('mascota_num');
$documento->mascota_id = $request->input('mascota_id');
$documento->tipo = ucfirst($request->input('tipo'));
$documento->descripcion = ucfirst($request->input('descripcion'));
$documento->fecha_documento = $request->input('fecha_documento');
if($request->hasFile('archivo')) {
$archivo = $request->file('archivo');
$archivo_folder = public_path('/uploads/documentos/') . $request->input('mascota_num');
$archivo_nombre = $archivo->getClientOriginalName();
$archivo_url = $archivo_folder . '/' . $archivo_nombre;
if (file_exists($archivo_folder)) {
$archivo->move($archivo_folder . '/' . $archivo_nombre);
} else {
File::makeDirectory($archivo_folder, $mode = 0777, true, true);
$archivo->move($archivo_folder . '/' . $archivo_nombre);
}
$documento->archivo = $request->input('mascota_num') . '/' . $archivo_nombre;
$documento->save();
return redirect()->route('mascotas.show', [$request->input('mascota_num')])->with('message', 'Documento agregado exitosamente.');
}
}
我上傳的文件怎麼看這個代碼:
uploads/documentos/
-- 1
-- file.pdf /folder
-- random_name.tmp /file
-- 2
-- file.pdf /folder
-- random_name.tmp /file
-- otherfile.pdf /folder
-- random_name.tmp /file
}
我想
uploads/documentos/
-- 1
-- myfile.pdf /file
-- 2
-- myfile.pdf /file
-- otherfile.pdf /file
理想的情況是什麼,我想保持私人文件,所以我試圖將它們上傳到t與此代碼,他存儲文件夾:
Storage::put('documentos/'.$request->input('mascota_num').'/', $archivo_nombre);
$documento->archivo = Storage::url('documentos/'.$request->input('mascota_num').'/'.$archivo_nombre);
但{了-ID}中創建的文件夾和文件沒有保存,我得到的是:
storage/app/documentos/
-- 1 /file without extension
-- 2 /file without extension
我會滿足於使第一部分現在工作。在此先感謝您的幫助。
我忘了創建一個從public/storage到storage/app/public的符號鏈接。現在我可以使用:'Storage :: url('documentos /'.$ documento-> archivo)''從葉片鏈接到我上傳的文件。 –