const downloadJobApplied = async (isNew = false) => {
try {
// Download the blob data
const response = await RNFetchBlob.fetch('GET', `${API_URL}/business/jobsApplied?isNew=${isNew}&from=${queryParams.from}&to=${queryParams?.to}`, {
Authorization: `Bearer ${token}`,
});
const blobData = response.data;
// Define the path to save the file
const timestamp = new Date().getTime(); // Get current timestamp
const filePath = `${RNFetchBlob.fs.dirs.DocumentDir}/Resume${timestamp}.zip`;
// Save the blob data to a file
await RNFetchBlob.fs.writeFile(filePath, blobData, 'base64');
setIsShow("RESUME_DOWNLOAD_SUCESS")
} catch (error) {
console.error('Error saving file: ', error);
}
};
У меня есть ответный объект, и мне нужно сохранить его в формате zip в ios. Этот код будет работать для Android. Мне нужно предложение, как достичь ios. Спасибо за помощь, я включаю все разрешения, но оно не работает.
Я не мог добавить комментарий к этому вопросу, но подумал, что могу оставить отзыв. Судя по вашему вопросу, вы пытаетесь заархивировать файл, загруженный из внешнего источника, с помощью Javascript в React-Native.
На основе предоставленного вами кода вы уже смогли загрузить файл, создать новый файл с расширением .zip, закодировать данные загрузки в base64 и поместить эти данные во вновь созданный файл.
Хотя то, что вы делаете, создает файл с расширением .zip, я не могу быть уверен, что полученный файл будет сжатым (загружаемый файл уже является сжатым?). Судя по вашему коду, он будет просто закодирован в формате Base64. Хотя я не уверен, почему этот код не работает в IOS, возможно, исправление сжатия также решит эту проблему.
Чтобы обеспечить сжатие и создать настоящий ZIP-файл с помощью Javascript, вам потребуется дополнительная библиотека. В данном случае я выбрал JSZip.
Установить библиотеку: npm install jszip
Включить импорт: import JSZip from 'jszip';
использовать JSZip для сжатия:
var zip = new JSZip();
zip.file(filePath, blobData);
zip.generateAsync({type:"base64"}).then(function (content) {
location.href = "data:application/zip;base64," + content;
});
Если реальная проблема, с которой вы столкнулись, заключается в том, что файл не создается с содержимым на вашем устройстве IOS, это может быть связано с проблемой, обсуждаемой здесь, когда символы новой строки мешали записи файла, но не выбрасывали его. ошибка. В этом случае вы можете сделать то, что было предложено в этом потоке, и удалить символы новой строки из данных перед их передачей в rn-fetch-blob. Но без дальнейшего устранения неполадок я не могу быть уверен в другом решении. Надеюсь это поможет.