Раньше мне удавалось вставить файл изображения в каталог файлов с помощью FormData. Но теперь FormData, которую я сейчас пытаюсь использовать для обновления неправильного изображения, возвращает пустые данные, даже если я передаю правильные параметры / полезную нагрузку, то есть файл с object
. Я пробовал использовать FormData.set для обновления и даже немного экспериментировал с forEach, но ни один из них у меня не работал. В Quasar (который похож на Bootstrap для Javascript) мы получаем rows
для каждого данных, чтобы мы могли обновить строку данных. Должен ли я получить строку для изображения перед FormData, наконец, получит ответ?
Frontend
<template>
<div>
<q-table
:filter="filter"
title="Test Section"
:data="dtdata"
:columns="columns"
row-key="TestId"
>
<q-tr slot="body" slot-scope="props" :props="props" class="cursor-pointer">
<q-td v-for="col in props.cols" :key="col.name" :props="props">
{{
col.value
}}
</q-td>
<q-td class="q-gutter-md">
<q-btn label="Edit" color="primary" @click.native="gatherData(props.row)" />
<q-btn label="Delete" color="red" @click.native="activateDel(props.row)" />
<q-btn label="Change Picture" color="green" @click.native="changeThisPic(props.row)" />
</q-td>
</q-tr>
</q-table>
</div>
</template>
<script>
methods: {
changeThisPic(row) {
this.editPic = true;
this.editData.testId = row.testId;
this.editData.testItemId = row.testItemId;
},
sendPicForUpdate() {
this.$store
.dispatch("UPDATE_PIC", {
testId: this.editData.testId,
uploadFile: this.editData.uploadFile,
testItemId: this.editData.testItemId
})
}
</script>
export default function (/* { ssrContext } */) {
const Store = new Vuex.Store({
mutations: {
UPDATE_PIC ({ commit }, payload) {
const formData2 = new FormData()
Object.entries(payload).forEach(([key, val]) => {
formData2.append(key, val)
})
axios
.put('http://localhost/MyComposer/', formData2, {
params: {
updateId: 2,
testId: payload.testId,
testItemId: payload.testItemId
}
})
.then(response => {
alert(response.data)
console.log(response)
})
.catch(error => {
console.log(error)
})
}
},
Backend
<?php
if (isset($_GET['updateId']) && $_GET['updateId'] == 1) {
$data = file_get_contents('php://input');
$decoded = json_decode($data);
$testId = $decoded->{'testId'};
$sub = $decoded->{'subject'};
$question = $decoded->{'question'};
$answer = $decoded->{'answer'};
$testItem = $decoded->{'testItemId'};
$db->where('TestItemId', $testItem);
$arrayDir = array('FileLocation');
$uploaddir = $db->get('teachertest', null, $arrayDir);
$uploadfile = $uploaddir . $_FILES['uploadFile']['name'];
if (move_uploaded_file($_FILES['uploadFile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";
}
if (!empty($sub)) {
$sdata = array(
'SubjectId' => $sub,
);
$db->where('TestId', $testId);
$newsub = $db->update('teachertest', $sdata);
if ($newsub) {
echo "Subject was changed and";
}
$tdata = array(
'Question' => $question,
'Answer' => $answer,
);
$db->where('TestId', $testId);
$newdb = $db->update('testdetails', $tdata);
if ($newdb) {
echo "Test item details were updated!";
}
}
?>