使用 Vue 和 Winter Cms 进行前端文件上传
Front End File Upload using Vue and Winter Cms
我正在尝试通过 Illuminate/Http/Request 从 Vue 前端将图像上传到 WinterCMS。
Vue 找到了文件,我可以 console.log 文件对象,但我不确定如何通过 api 获取它。例如我试过
public function saveImage(Request $req){
$images = $req->files('images');
}
哪个不起作用,
public function saveImage(Request $req){
$images = $req['images'];
}
我正在使用控制器来处理我的路线,例如:
Route::post('/saveImage', 'Author\Project\Controllers\ProductControl@saveImage');
我像往常一样向插件添加了一个 attachOne 关系,我的表单有 enctype="multipart/form-data"
我以前遇到过这个问题,通过将图像转换为 base64 来解决这个问题,但是这个项目会有很多图像,我不想再走这条路了。
非常感谢任何建议
您可以像常规 post 一样发送图像并在 Laravel 控制器中使用常规 $request->file('images')
方法。
您可以使用 Javascript FormData 对象。例如;
<div>
<input type="file" @change="handleImages" multiple>
<button @click="uploadImages">Upload!</button>
</div>
data: () => ({
images: []
}),
methods: {
handleImages (event) {
this.images = event.target.files
},
uploadImages () {
const formData = new FormData();
for (const i of Object.keys(this.images)) {
formData.append('images', this.images[i])
}
axios.post('/saveImage', formData, {
}).then((res) => {
console.log(res)
})
}
}
我正在尝试通过 Illuminate/Http/Request 从 Vue 前端将图像上传到 WinterCMS。 Vue 找到了文件,我可以 console.log 文件对象,但我不确定如何通过 api 获取它。例如我试过
public function saveImage(Request $req){
$images = $req->files('images');
}
哪个不起作用,
public function saveImage(Request $req){
$images = $req['images'];
}
我正在使用控制器来处理我的路线,例如:
Route::post('/saveImage', 'Author\Project\Controllers\ProductControl@saveImage');
我像往常一样向插件添加了一个 attachOne 关系,我的表单有 enctype="multipart/form-data" 我以前遇到过这个问题,通过将图像转换为 base64 来解决这个问题,但是这个项目会有很多图像,我不想再走这条路了。 非常感谢任何建议
您可以像常规 post 一样发送图像并在 Laravel 控制器中使用常规 $request->file('images')
方法。
您可以使用 Javascript FormData 对象。例如;
<div>
<input type="file" @change="handleImages" multiple>
<button @click="uploadImages">Upload!</button>
</div>
data: () => ({
images: []
}),
methods: {
handleImages (event) {
this.images = event.target.files
},
uploadImages () {
const formData = new FormData();
for (const i of Object.keys(this.images)) {
formData.append('images', this.images[i])
}
axios.post('/saveImage', formData, {
}).then((res) => {
console.log(res)
})
}
}