Newto
@Newto

Как предотвратить перезагрузку страницы?

Народ, хелпаните, плиз, по такой теме:

Я заливаю файл на сервер посредством Vue скрипта передающего его в Laravel.
Вот метод Vue:
import { ref } from 'vue';
import axios from 'axios';

const fileInputRef = ref(null);

const uploadXlsx = (event) => {
  event.preventDefault();

  const file  = fileInputRef.value.files[0];
      
  const formData = new FormData();
  formData.append('lots', file);
  
    axios.post('/auth/tools/uploadXlxsFile', formData)
        .then(response => {
          console.log(response.data);
        })
        .catch(error => {
          console.log(error.data);
    });
    
    return false;
};

А вот принимающий метод Laravel:
public function uploadXlxsFile(Request $request) 
    {
        if ($request->hasFile('lots')) {
            $file = $request->file('lots');
          
            $file->storeAs('public', "lots.xlsx");

            return response()->json(['message' => 'File uploaded successfully']);
        } else {
            return response()->json(['message' => 'No file found in the request'], 200);
        }
    }

Фишка в том, что инструкция
$file->storeAs('public', "lots.xlsx");
приводит к перезагрузке страницы(если ее закомментить, то перезагрузки не происходит), а мне её нужно избежать. Как это сделать, не могу понять.

p.s. Отправка файла происходит из vuexy
<VCardText>
    <VBtn color="success" @click.prevent="uploadXlsx($event)" style="text-transform: none;">
      Upload file
     </VBtn>
</VCardText>
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Newto
@Newto Автор вопроса
Итак, решение вопроса. Все чуточку интересней чем "неумение" дебажить php и vue. Внимательный читатель мог заметить, что я говорил о том, что отправка идёт из vuexy. Так вот в vuexy есть такая штука как Vite, а в Vite уже подключается такая штука как chokidar. При создании/удалении файла, в контексте сборки vuexy+laravel, сhokidar будет обновлять сайт в браузере. Решение -- прописать директорию, куда заливается файл, как неотслеживаемую. Подробнее тут.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AmdY
@AmdY
PHP и прочие вебштучки
Загляните в консоль разработчика в браузере. Учитесь дебажить что JS, что PHP.
Предполагаю, что у вас $file->storeAs вызывает ошибку связанную с правами или путями. Сервер возвращает ошибку типа 500, а вы в кэтче ловите её неправильно.
https://axios-http.com/docs/handling_errors
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы