图像不会在文件夹路径中移动

Image dose not move at folder path

我已经将 777 permission 放入我的 images 文件夹。 Charts Table 也正在保存图像的所有记录。我要在这里附上 table:charts 结构。

public function store(Request $request)
{
        $input = $request->all();
        $tradeID= Auth::user()->trade()->create($input);

    if($file = $request->file('file'))
    {
        $name = time() . $file->getClientOriginalName();
        $file->move('images', $name);
        $photo = Chart::create(['file'=>$name]);
        $input['photo_id'] = $photo->id;
    }
        $tradeID->chart()->create($input);
}

您是要移动上传的文件还是现有文件?

要移动文件,您需要执行以下操作:

File::move($oldPath, $newPath);

旧路径和新路径应包括带文件名(和扩展名)的完整路径

要存储上传的文件,您需要执行以下操作:

Storage::disk('diskname')->put($newPath, File::get($file));

新路径是包含文件名(和扩展名)的完整路径。

  • 磁盘是可选的,你可以直接存储文件 Storage::put()..
  • 磁盘位于 config/filesystems.php

File::get($file) , $file 是你从 post 请求 $file = $request->file('file') 输入的,基本上它获取上传文件的内容。

UPD#1

好的,你可以这样做:

$request->file('file')->store(public_path('images'));

或存储 class:

    // get uploaded file
    $file = $request->file('file');
    // returns the original file name.
    $original = $file->getClientOriginalName();
    // get filename with extension like demo.php
    $filename = pathinfo($original)['basename'];
    // get public path to images folder
    $path = public_path('images');
    // concat public path with filename
    $filePath = $path.'/'.$filename;
    // store uploaded file to path
    $store = Storage::put($filePath, File::get($file));

尝试将目标路径从相对路径更改为绝对路径

public function store(Request $request)
{
    $input = $request->all();
    $tradeID= Auth::user()->trade()->create($input);

    if($file = $request->file('file'))
    {
        $name = time() . $file->getClientOriginalName();
        $file->move( public_path() . '/images/', $name);  // absolute destination path
        $photo = Chart::create(['file'=>$name]);
        $input['photo_id'] = $photo->id;
    }
        $tradeID->chart()->create($input);
}

试试这个

if($file = $request->file('file'))
{
    $name = time() . $file->getClientOriginalName();
    $path = $file->storeAs('images', $name,'public');
    $photo = Chart::create(['file'=>$name]);
    $input['photo_id'] = $photo->id;
}

您可以使用 /storage/public/file_name/file_name 检索文件,具体取决于您告诉 laravel 存储 public 文件的位置

你实际上并不是在存储文件,你实际上是在移动一个不存在的文件。

您可能会考虑什么 您很可能想从 public 路径访问上传的文件。如果是这样,您应该将此文件存储到存储目录中的特定文件夹中,并在 public 路径中创建指向该目录的符号链接。 这是一个例子:

Storage::disks('public')->put($filename, $uploadedFile); // filename = 'images/imageFile.jpg'

这会在您的 storage/app/public/images 目录中创建一个文件。

然后,您可以创建一个符号链接,laravel提供一个简单的命令。

php artisan storage:link

这会创建一个符号链接到您的 public 磁盘。

然后,您可以在 http://your-site-server/storage/images/imageFile.jpg

访问图像

希望对您有所帮助。

 $name = time().'.'. $file->getClientOriginalName(); //depends on ur requirement
        $file->move(public_path('images'), $name);