Я пытаюсь извлечь png из zip-файла для загрузки на сервер. Моя проблема в том, что большие двоичные объекты, которые я загружаю, имеют неправильный тип содержимого, поэтому сервер отклоняет их.
Может ли кто-нибудь сказать мне, как изменить тип содержимого в большом двоичном объекте или извлечь файлы в виде изображений
Вот как я их извлекаю
JSZip.loadAsync(file)
.then(function (zip) {
const re = /(.jpg|.png|.gif|.ps|.jpeg)$/
const dataFile = /(.json)$/
const promises = Object.keys(zip.files).filter(function (fileName) {
return re.test(fileName.toLowerCase())
}).map(function (fileName) {
const file = zip.files[fileName]
return file.async('blob').then(function (blob) {
return [
fileName,
URL.createObjectURL(blob),
]
})
})
const jsonPromise = Object.keys(zip.files).filter(function (fileName) {
return dataFile.test(fileName.toLowerCase())
}).map(function (fileName) {
const file = zip.files[fileName]
return file.async('string').then(function (data) {
return [
'data',
data,
]
})
})
promises.push(jsonPromise[0])
return Promise.all(promises)
}).then(function (result) {
return result.reduce(function (acc, val) {
acc[val[0]] = val[1]
return acc
}, {})
}).then((result)=>{
const object = JSON.parse(result.data)
for(let i in object.images)
object.images[i].url = result[object.images[i].name]
resolve(object)
}).catch((err)=>{reject(err)})
})
Затем я получаю URL-адрес большого двоичного объекта и пытаюсь загрузить его.
fetch(blobURL).then(res => res.blob()).then((blob)=>{
blob.lastModifiedDate = new Date()
blob.name = 'model_' + id + '_' + uuidv1() + '.png'
Но этот блоб имеет тип содержимого «обычный/текст», когда он должен быть в формате png.