Ich versuche, meine Anwendung auf "public/uploads/documentos/{the-id}" hochladen, kann aber nicht herausfinden, was mit meinem aktuellen Setup nicht stimmt. Wenn ich jetzt eine Datei mit dem Namen "myfile.pdf" hochlade, wird ein Ordner mit dem Namen "myfile.pdf" und darin eine * .tmp-Datei erstellt. In meiner Datenbank wird "{the-id} /myfile.pdf" als Datei-URL gespeichert, aber dies bringt mich zur Ordneransicht, wenn ich die Datei darin sehen möchte.Laravel Datei-Upload erstellt einen Ordner mit einer temporären Datei
Wie kann ich es so ändern, dass beim Hochladen eines Dokuments die Datei "myfile.pdf" direkt unter "public/uploads/documentos/{the-id}" erstellt wird, damit ich darauf zugreifen kann? {the-id} ist ein Ordner, der basierend auf der ID des Patienten erstellt wurde. Alle Dokumente, die zu ihnen gehören, werden in demselben Ordner gespeichert.
-Controller
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.');
}
}
Wie kann ich meine hochgeladenen Dateien mit diesem Code aussehen:
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
}
Was ich will
uploads/documentos/
-- 1
-- myfile.pdf /file
-- 2
-- myfile.pdf /file
-- otherfile.pdf /file
Im Idealfall würde Ich mag das halten Dateien privat, also habe ich versucht, sie auf t hochzuladen er Speicherordner mit diesem Code:
Storage::put('documentos/'.$request->input('mascota_num').'/', $archivo_nombre);
$documento->archivo = Storage::url('documentos/'.$request->input('mascota_num').'/'.$archivo_nombre);
aber {the-id} Ordner wurde nicht erstellt und die Dateien nicht gespeichert wurden, alles, was ich bekam, war:
storage/app/documentos/
-- 1 /file without extension
-- 2 /file without extension
ich abrechnen würde für der erste Teil funktioniert jetzt. Vielen Dank im Voraus für Ihre Hilfe.
Ich habe vergessen, einen symbolischen Link von öffentlich/Speicher zu Speicher/app/public zu erstellen. Jetzt kann ich von einem Blade mit meinen hochgeladenen Dateien verknüpfen: 'Storage :: url ('documentos /'.$ documento-> archivo))'. –