Нашел решение, нужно было написать свой загрузчик файлов для запросов через fetch, потому что capacitor блокирует XMLhttp запросы и поставить в upload как кастомный метод:
const handleCustomRequest = async ({ file, onSuccess, onError }, eventId) => {
console.log("Отправка файла вручную:", file);
if (!eventId) {
console.error("Ошибка: eventId отсутствует");
onError(new Error("Ошибка: eventId отсутствует"));
return;
}
const formData = new FormData();
// Принудительно закодируем имя файла в UTF-8
const encodedFileName = new Blob([file], { type: file.type });
formData.append("file", encodedFileName, encodeURIComponent(file.name)); // Кодируем имя файла
try {
const response = await fetch(
`${process.env.REACT_APP_API_URL}/api/Photo?event_id=${eventId}`,
{
method: "POST",
body: formData,
}
);
if (!response.ok) throw new Error(`Ошибка: ${response.statusText}`);
console.log("Файл успешно загружен!");
onSuccess();
} catch (error) {
console.error("Ошибка при загрузке файла:", error);
onError(error);
}
};
<Upload
customRequest={(options) => handleCustomRequest(options, event.id)}
listType="picture-card"
showUploadList={false}
multiple={true}
onChange={handleUploadChange(event.id)} // Обработчик изменения состояния загрузки
>
<button style={{ border: 0, background: "none" }} type="button">
<PlusOutlined />
<div style={{ marginTop: 8 }}>Добавить файлы</div>
</button>
</Upload>