FormData не получает ответа - PullRequest
0 голосов
/ 10 июля 2020

Раньше мне удавалось вставить файл изображения в каталог файлов с помощью 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!";
                }
            } 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...