php - 上传文件返回 NULL - 带有 Laravel 8 的 VueJs3
问题描述
我有一个问题我尝试了很多东西但没有解决所以请我需要你的帮助
这是我的 Vue Temp:
<form @submit.prevent="createCat" enctype="multipart/form-data" method="POST">
<div class="mt-1 relative rounded-md shadow-sm mb-3">
<input id="cat_name" type="text" v-model="categories.cat_name" />
</div>
<div class="mt-1 relative rounded-md shadow-sm mb-3 w-50">
<input name="img_url" id="img_url" accept="image/*" type="file">
</div>
<button type="submit">Add</button>
</form>
data(){
return{
categories:{
cat_name: '',
img_url: null,
},
}
},
methods:{
createCat(){
let data = new FormData();
data.append('cat_name', this.categories.cat_name);
data.append('url', this.categories.img_url);
this.$inertia.post('/categories', this.categories)
.then(()=>{
//
})
},
}
在控制器中我尝试调试请求,但它总是返回NULL
public function store(Request $request)
{
dump($request->file('img_url'));
dump($request->cat_name);
dump($request->all());
}
结果
null
"name"
array:2 [▼
"cat_name" => "name"
"img_url" => null
]
解决方案
根据官方文档
<template>
<form @submit.prevent="submit">
<input type="text" v-model="form.name" />
<input type="file" @input="form.avatar = $event.target.files[0]" />
<progress v-if="form.progress" :value="form.progress.percentage" max="100">
{{ form.progress.percentage }}%
</progress>
<button type="submit">Submit</button>
</form>
</template>
<script>
import { useForm } from '@inertiajs/inertia-vue3'
export default {
setup () {
const form = useForm({
name: null,
avatar: null,
})
function submit() {
form.post('/users')
}
return { form, submit }
},
}
</script>
推荐阅读
- javascript - 使用 Async/await 函数和 npm-mysql 获取查询对象而不是结果
- azure - Azure 应用服务 - docker-compose 文件问题
- linux - 为什么 mv --backup 在 CentOS 7 上不起作用?
- r - 使用 OpenMP 在 R 4.0.2 中编译 data.table
- c++ - Linux中是否有任何标准API可以从语言环境(“en_US.UTF-8”)中提取语言(“en”)?
- php - Laravel with([]) 仅选择关系的某些列
- json - 如何在powershell中使用下面的JSON主体进行invoke-restmethod
- node.js - 发送在促销选项卡中收到的电子邮件 sendgrid 不在主要选项卡中
- powerpoint - 使用 OpenXML.Presentation 刷新 PowerPoint/PPTX 中的文本大小/布局
- firebase - 在颤振项目中替换 Firebase json 的 Github 操作