在laravel中同时在两个不同的文件夹中上传图像

时间:2019-05-27 09:53:03

标签: laravel

  

此代码仅将图像保存在一个“文件夹一”中。我要上传   图像同时放在两个不同的文件夹中,现在它保存在一个文件夹中

     

示例

     

“第一文件夹”

     

     

“第二个文件夹”

<?php

namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Mail;
use Illuminate\Auth\Events\Registered;

class RegisterController extends Controller
{

use RegistersUsers;

protected $redirectTo = '/home';

public function __construct()
{
    $this->middleware('guest');
}

protected function validator(array $data)
{
    return Validator::make($data, [
       'photo_jpeg' => 'required|image|mimes:jpeg,png,jpg|max:2048',
    ]);
}

protected function create(array $data)
{
    $photo_jpeg= time() . '.' . $data['photo_jpeg']->getClientOriginalExtension();
    $data['photo_jpeg']->move(base_path() . 'public/folder-one', $photo_jpeg);

    return user::create([
        'photo_jpeg' => $photo_jpeg,
    ]);

}

2 个答案:

答案 0 :(得分:0)

您不能对同一文件运行两次move(),因为顾名思义,它会移动文件,因此在第二次运行时,原始文件将不再存在。

您必须复制文件:

$uploadPath = public_path('folder-one/');
$file = $data['photo_jpeg'];
$photo_jpeg= time() . '.' .$file->getClientOriginalExtension();
$file->move($uploadPath,$photo_jpeg);
\File::copy($uploadPath.$photo_jpeg,public_path('folder-two/').$photo_jpeg);

答案 1 :(得分:0)

使用方法copy()在新目的地复制文件。

$request->file('photo')->move($destination_path, $file_name); //original
copy($destination_path.$file_name, $new_path.$file_name); //backup