Skip to content
Snippets Groups Projects
Commit 1e49fad7 authored by Erwan Rouchet's avatar Erwan Rouchet Committed by Bastien Abadie
Browse files

Allow all archive formats

parent b3d51179
No related branches found
No related tags found
1 merge request!1599Allow all archive formats
......@@ -456,3 +456,31 @@ export const ROLES: { readonly [name: string]: Role } = {
export const BANNER_MESSAGE = metas.banner_message
export const BANNER_STYLE = metas.banner_style in NOTIFICATION_TYPES ? metas.banner_style : 'info'
/**
* MIME types of supported archives in file imports
*/
export const ARCHIVE_MIME_TYPES = [
// .zip, standard
'application/zip',
// .zip, from Windows only
'application/x-zip-compressed',
// .tar
'application/x-tar',
// .tar.gz, from libmagic only
'application/x-gtar',
// .tgz, from browsers only
'application/x-compressed-tar',
// .gz from anywhere, .tgz from libmagic only
'application/gzip',
// .bz2, from browsers only
'application/x-bzip',
// .bz2, from libmagic only
'application/x-bzip2',
// .lzma
'application/x-lzma',
// .xz
'application/x-xz',
// .zst
'application/zstd'
]
......@@ -126,12 +126,13 @@
</template>
<script>
import { isAxiosError } from 'axios'
import { mapGetters as mapVuexGetters } from 'vuex'
import { mapState, mapActions } from 'pinia'
import FileSelector from '@/components/Imports/Files/Selector'
import { truncateMixin, corporaMixin } from '@/mixins.js'
import { isAxiosError } from 'axios'
import { ARCHIVE_MIME_TYPES } from '@/config'
import { truncateMixin, corporaMixin } from '@/mixins'
import { useNotificationStore, usePonosStore } from '@/stores'
import FileSelector from '@/components/Imports/Files/Selector'
export default {
mixins: [
......@@ -245,12 +246,12 @@ export default {
const pdfCount = this.selectedFiles.filter(file => file.content_type === 'application/pdf').length
const imgCount = this.selectedFiles.filter(file => file.content_type.startsWith('image/')).length
const zipCount = this.selectedFiles.filter(file => ['application/zip', 'application/x-zip-compressed'].includes(file.content_type)).length
const filesCount = pdfCount + imgCount + zipCount
const archiveCount = this.selectedFiles.filter(file => ARCHIVE_MIME_TYPES.includes(file.content_type)).length
const filesCount = pdfCount + imgCount + archiveCount
const iiifCount = this.selectedFiles.filter(file => ['application/ld+json', 'application/json'].includes(file.content_type.split(';')[0])).length
if (filesCount + iiifCount < this.selectedFiles.length) {
this.selectionError = 'Can only import images, PDF documents, ZIP archives or IIIF files'
this.selectionError = 'Can only import images, PDF documents, archives or IIIF files'
return
}
if (filesCount && iiifCount) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment