Отправка файла в Inertia
Пусть файл уже выбран в поле, а в папке проекта его ещё нет. Человек нажал сохранение, но на экране не видно, куда файл лежит после приёма.
Файл запроса берут методом
file, а в папку его
кладёт метод store.
Строку пути, которую вернул
store, передают на
страницу пропсом и показывают
на том же экране.
Давайте опишем открытие формы и сохранение файла в папку:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts/create', function () {
return Inertia::render('Posts/Create', [
'path' => null,
]);
});
Route::post('/posts', function (Request $request) {
$path = $request->file('photo')->store('photos');
return Inertia::render('Posts/Create', [
'path' => $path,
]);
});
?>
Давайте выведем путь под формой, когда он пришёл с сервера:
<script setup>
import { Form } from '@inertiajs/vue3'
defineProps({
path: String,
})
</script>
<template>
<Form action="/posts" method="post">
<input type="file" name="photo" />
<button type="submit">Save</button>
</Form>
<p v-if="path">{{ path }}</p>
</template>
Сделайте так, чтобы файл работника попадал в папку проекта, а на экране был виден путь, под которым он лежит.