laravel - 如何使用 Vue 在 Laravel 中上传文件 PDF
问题描述
我想从 View 使用 Vue 到 Laravel 获取文件 pdf 文档。但它仍然是错误的。可以帮助我的代码有什么问题吗?
这是我的刀片
<template>
<form class="form" files="true" method="post" @submit.prevent="onSubmit" enctype="multipart/form-data">
<div class="form-group">
<label>File SK
<input type="file" multiple class="form-control-file" name="fileSk" id="fileSk" ref="fileSk"
@change="fileSkUpload()"/>
</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</template>
这是我获取文件的 Vue 代码
fileSkUpload(event) {
let files = event.target.files;
if (files.length) this.fileSk = files[0];
},
onSubmit() {
let data = new FormData();
data.append('fileSk', this.fileSK);
data.append('_method', 'put'); // add this
axios.post('/psu/list/store', {
data: this.data,
}).then(response => {
this.data = ''
}).catch(error => {
if (error.response.status === 422) {
this.errors = error.response.data.errors || {};
}
});
},
这是我的控制器
public function store(Request $request)
{
$dokumen = new Dokumen();
$psu = new Psu();
$fileSk = $request->file('fileSk');
$data = $request->input('fileSk');
$extension = $fileSk->getClientOriginalExtension();
Storage::disk('uploads')->put($fileSk->getFileName() . '.' . $extension, File::get($file));
$dokumen->file_image_dokumen = $fileSk->getFileName() . '.' . $extension;
$dokumen->save();
}
我得到了这个错误:
"Call to a member function getClientOriginalExtension() on null"
解决方案
在您的控制器中,您尚未初始化$file
变量。
除了使用Storage
外观来存储文件,您还可以使用它Request
本身:
$fileSk->storeAs('', $fileSk->getFileName() . '.' . $extension, 'uploads');
您的 JS 代码中似乎存在一些问题。
1.不要在其中包含括号,@change="fileSkUpload()"
因为这会导致event
不传递给方法:
@change="fileSkUpload"
或者,您必须自己通过活动:
@change="fileSkUpload($event)"
2.我注意到在你的fileSkUpload
方法中你引用this.fileSk
但在你的onSubmit
方法中你引用this.fileSK
(大写的K) - 这些应该是相同的。
3.您不需要将其包装FormData
在一个对象中。将您的 axios 调用更改为:
axios.post('/psu/list/store', data)
.then(response => {
this.data = ''
}).catch(error => {
if (error.response.status === 422) {
this.errors = error.response.data.errors || {};
}
});
推荐阅读
- reactjs - React - 当父组件将方法作为道具传递时,在哪里对状态变化进行单元测试:父组件还是子组件?
- java - 如何在修复运行时错误的同时只打印最终结果
- dns - 如何将 godaddy 域名映射到 AWS Application Loadbalancer?
- json - 如何在 WP REST API 的 JSON 数据中避免 html 实体?
- terminal - ipython:更改匹配括号的语法突出显示颜色
- javascript - How to add @angular/material to an old angular project?
- python - 使用 numpy 以矢量化形式转换 for 循环函数
- vb.net - 调用程序集的入口点而不显示任何窗口 - VB.Net
- amazon-web-services - 获取不存在“Access-Control-Allow-Origin”标头 AWS api 网关
- git - VSCode Git 退出并保存提交编辑器?