Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.3 Storage::put使用文件名创建一个目录_Php_Laravel_Laravel 5_Laravel 5.3_Laravel Filesystem - Fatal编程技术网

Php Laravel 5.3 Storage::put使用文件名创建一个目录

Php Laravel 5.3 Storage::put使用文件名创建一个目录,php,laravel,laravel-5,laravel-5.3,laravel-filesystem,Php,Laravel,Laravel 5,Laravel 5.3,Laravel Filesystem,我正在使用Laravel的文件存储功能保存文件: public function dataPost(Request $request) { $fileInForm = 'doc'; if ($request->hasFile($fileInForm)) { $file = $request->file($fileInForm); if ($file->isValid()) { // Filename

我正在使用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/234.jpg/234234.jpg

这是预期的吗?有没有办法只存储文件而不为每个文件指定单独的目录


谢谢

发生这种情况是因为您指定了要存储为文件名的目录。
newFilename
,应该是目录名,如“images”。参考这一行

Storage::disk('local')->put($newFilename, $file);
所以你可以把这个改成

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

然后,您将获得存储在
storage/app/images/234234.jpg

的路径。您需要在第二个参数中提供文件内容,而不是文件对象,请尝试以下操作:


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

$文件已编码。您必须取消对该文件的编码


存储::磁盘('local')->put($newFilename,File::get($File))

在这种情况下,文件在什么时候获得新的文件名?我是否应该编辑
$file
对象以更新文件名?类似于
$file->originalName=$newFilename?您可以这样做,也可以使用@ABDEL RHMANThank you获取此代码段,这可能会提供一些有限的即时帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
Storage::disk('local')->putFileAs('', $file, $filenewname);