30

ファイルを保存するために Laravel のファイル ストレージ機能を使用しています。

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);
        }
    }
}

これによりファイルは保存されますが、ファイルと同じ名前のディレクトリ内に保存されます。次に例を示します。

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

また

storage/app/234234234.jpg/234234234.jpg

これは期待されていますか?ファイルごとに個別のディレクトリを作成せずにファイルを保存する方法はありますか?

ありがとう!

4

4 に答える 4

9

これは、格納するディレクトリをファイル名として指定したために発生しました。はnewFilename、「images」などのディレクトリ名にする必要があります。この行を参照してください

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

これを次のように変更できます

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

次に、に保存されているパスを取得しますstorage/app/images/234234234.jpg

于 2016-10-12T16:07:55.590 に答える
1

$file はエンコードされています。ファイルのエンコードを解除する必要があります。

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

于 2019-09-10T18:05:09.587 に答える