Я использую Laravel API и Vue.js для своего проекта. Я могу сохранить изображение в открытом доступе, но теперь я хочу сохранить файлы. Однако, когда я вызываю store, выдается ошибка «Вызов функции-члена store () для строки». Я изменил значение файловой системы по умолчанию как публичное, но результат тот же.
Запрос Axios
<script>
export default {
props: ['data'],
data() {
return {
form:{
task_id:this.data.id,
filename:'Select file',
file:'',
cover_letter: '',
amount: '',
pre_experience: '',
}
}
},
methods: {
getFile()
{
let file = (this.form.file.length > 200) ? this.form.file : "";
return file;
},
onFileChange(e) {
let file = e.target.files [0];
this.form.filename=file.name
let reader = new FileReader();
reader.onload = (file) => {
this.form.file = reader.result;
}
reader.readAsDataURL(file);
},
submit()
{
axios.post('api/bid',this.form, {
headers: {'Authorization': 'Bearer ' + localStorage.getItem('token')}
})
.then(res => {
console.log(res.data)
})
}
Контроллер
public function store(Request $request)
{
$bid = new Bid();
$bid->task_id = $request->task_id;
$bid->amount = $request->amount;
$bid->cover_letter = $request->cover_letter;
$bid->work_experience = $request->pre_experience;
$bid->user_id = auth()->user()->id;
if ($request->has('file')) {
$file = $request->get('file');
$filename = time().'.'.explode('/', explode(':', substr($file, 0, strpos($file, ';')))[1])[1];
$file->store('files', 'public');
$bid->file = $filename;
}
dd($bid);
$bid->save();
return response(new BidResource($bid), Response::HTTP_ACCEPTED);
}
Каждый раз, когда выдается сообщение {сообщение: «Вызов функции-члена store () on string»,…}.