#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.