Как заблокировать десятичный символ при загрузке CSV-файла в Javascript?

#javascript #csv #download #axios #blob

Вопрос:

У меня есть рабочее решение для загрузки CSV-файла, созданного моим API с помощью axios. (см. Код ниже)

Моя проблема в том, что в зависимости от десятичного символа, установленного в области Windows, числа в файлах CSV не всегда имеют правильный формат.

Например :

  • Если мой десятичный символ «.», числа в файле CVS будут сохранены как 122,33
  • Если мой десятичный символ «,», числа в файле CVS будут сохранены как 122,33

Есть ли способ «заблокировать» этот параметр, поэтому, когда javascript создает CSV-файл из большого двоичного объекта и загружает его, десятичный символ ВСЕГДА «.»?

Вот мой код :

 getWithParams: (route, mutation, commit, payload) => new Promise((resolve, reject) => {
    commit('setIsLoading', true);
    const params = new URLSearchParams();
    payload.params.forEach((element) => {
      params.append(element.param, element.value);
    });
    axios.get(`${apiURL}${route}`, { params, responseType: 'blob' }).then((response) => {
      FileDownload(response.data, 'QueryResults.csv');
      commit('setIsLoading', false);
      resolve(response);
    }).catch((error) => {
      reject(helpers.setError(error.message));
    }).finally(() => {
      commit('setIsLoading', false);
    });
  }),
 

Примечания :

  • Я не могу попросить пользователей изменить параметр региона в Windows
  • Разделителем в файле CSV являются ; чтобы убедиться, что его не перепутают с десятичным символом ,

Комментарии:

1. Разве это не проблема на стороне сервера? Почему код на стороне клиента имеет значение?

2. @CallumMorrisson В зависимости от компьютера, совершающего вызов , результирующий файл CSV изменяется с помощью или . на том же сервере.

3. Но это сервер, создающий файл CSV, верно? или вы возвращаете необработанные данные с сервера и заставляете клиента создавать CSV-файл?

4. Сервер создает CSV-файл. Клиентская сторона создает файл только с полученным большим двоичным объектом.

5. Да, значит, проблема в сервере. Вам нужно будет исправить код сервера, который генерирует CSV.