webentwicklung-frage-antwort-db.com.de

Laravel 5.3 Storage :: put erstellt ein Verzeichnis mit dem Dateinamen

Ich verwende die Dateispeicherfunktion von Laravel, um eine Datei zu speichern:

public function dataPost(Request $request) {

    $fileInForm = 'doc';

    if ($request->hasFile($fileInForm)) {

        $file = $request->file($fileInForm);
        if ($file->isValid()) {

            // Filename is hashed filename + part of timestamp
            $hashedName = hash_file('md5', $file->path());
            $timestamp = microtime() * 1000000;

            $newFilename = $hashedName . $timestamp . '.' . $file->getClientOriginalExtension();

            Storage::disk('local')->put($newFilename, $file);
        }
    }
}

Dadurch wird die Datei gespeichert, jedoch in einem Verzeichnis, das wie die Datei bezeichnet wird. Beispiel:

storage/app/952d6c009.jpg/952d6c009.jpg

oder

storage/app/234234234.jpg/234234234.jpg

Wird das erwartet? Gibt es eine Möglichkeit, die Datei ohne ein separates Verzeichnis für jede Datei zu speichern?

Vielen Dank!

9
zundi

sie müssen den Dateiinhalt im zweiten Argument und nicht im Dateiobjekt angeben. Versuchen Sie Folgendes:

Storage::disk('local')->put($newFilename, file_get_contents($file));

29
ABDEL-RHMAN

Dies geschah, weil Sie das Verzeichnis angeben, das als Dateiname gespeichert werden soll. newFilename sollte der Verzeichnisname sein, z. B. 'images'. Siehe diese Zeile

Storage::disk('local')->put($newFilename, $file);

Sie könnten das also ändern

Storage::disk('local')->putFile('images', $file);

Dann wird der Pfad unter storage/app/images/234234234.jpg gespeichert.

2
xmhafiz

$ file is encoded. Sie müssen die Datei entschlüsseln.

Storage :: disk ('local') -> put ($ newFilename, File :: get ($ file));

0
Abid Shah
Storage::disk('local')->putFileAs('', $file, $filenewname);
0
AK Coders