Laravel |Изменить значение realPath файла () - PullRequest
0 голосов
/ 09 мая 2018

Можно ли изменить realPath атрибут файла Laravel? Я на самом деле могу переместить файл, но не могу изменить запись в базе данных, так как она записана как старый realPath, а не новый путь.

Вот что я получаю, когда выкидываю $ request-> file ('xx');

UploadedFile {#476 ▼
  -test: false
  -originalName: "Screen Shot 2018-05-07 at 6.08.05 PM.png"
  -mimeType: "image/png"
  -size: 312932
  -error: 0
  #hashName: null
  path: "/Applications/MAMP/tmp/php"
  filename: "phpg4VH0Z"
  basename: "phpg4VH0Z"
  pathname: "/Applications/MAMP/tmp/php/phpg4VH0Z"
  extension: ""
  realPath: "/Applications/MAMP/tmp/php/phpg4VH0Z"
  aTime: 2018-05-09 13:33:43
  mTime: 2018-05-09 13:33:42
  cTime: 2018-05-09 13:33:42
  inode: 2003589
  size: 312932
  perms: 0100600
  owner: 501
  group: 80
  type: "file"
  writable: true
  readable: true
  executable: false
  file: true
  dir: false
  link: false
}

А вот и мой код:

public function store(UploadRequest $request)
{
    $path = public_path('/uploads');

    $project = new Project($request->all());
    $project->save();

    foreach ($request->file() as $file) {
        dd($file);
        $fileName = time().'.'.$file->getClientOriginalExtension();
        $file->storeAs($path, $fileName);
    }

    return $request->all();
}

Я хочу сохранить файл в папке public / uploads, с произвольным именем и тем же путем / именем в базе данных. Пока это как /Applications/MAMP/tmp/php/phpGQhReP.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Это должно сработать, предполагается, что ваш <input с именем файла file:

public function store(UploadRequest $request)
{
    if ($request->hasFile('file')) { // depends on your FormRequest validation if `file` field is required or not
        $path = $request->file->storePublicly(public_path('/uploads'));
    }

    Project::create(array_merge($request->except('file'), ['file' => $path])); // do some array manipulation

    return $request->all();
}

И это для загрузки нескольких файлов:

public function store(UploadRequest $request)
{
    foreach ($request->file() as $key => $file) {
        if ($request->hasFile($key)) {
            $path = $request->$key->storePublicly('/uploads');
        }
        $keys[]  = $key;
        $paths[] = $path;
    }
    $data = $request->except($keys);
    $data = array_merge($data, array_combine($keys, $paths));

    Project::create($data);

    return back()->with('success', 'Project has been created successfully.');
}
0 голосов
/ 09 мая 2018

Вы можете переместить файл следующим образом

$file->move(public_path('uploads'), $file->originalName);
...