안드로이드

[Android] 첨부파일시 여러 파일형식 제어

코딩하는후운 2023. 8. 10. 16:40
반응형

첨부파일 작업중에 여러형식의 파일을 제어 해야한다.


바쁘신분들은 바로 이거 참조

구글 mime type Link


Intent에

  • type을 */* 주고 
  • EXTRA_MIME_TYPES에 적용할 MimeType들을 String배열로 넣어주면 된다.
type = "*/*"
val mimeTypes = arrayOf("각 MimeType", "각 MimeType")
putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)

 

MIME TYPE을 인터넷으로 검색 했지만 잘 나오지 않는 파일형식들도 있었다!
그래서 파일 하나하나 로그를 찍어가면서 살펴 보았습니다.

- Mime Type 가져오기

fun getMimeType(uri: Uri): String? {
    var mimeType: String? = null
    mimeType = if (ContentResolver.SCHEME_CONTENT == uri.scheme) {
        val cr: ContentResolver = getContentResolver()
        cr.getType(uri)
    } else {
        val fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri
            .toString())
        MimeTypeMap.getSingleton().getMimeTypeFromExtension(
            fileExtension.lowercase(Locale.getDefault()))
    }
    return mimeType
}

- 파일명 가져오기

fun getFileName(uri: Uri) {
    val cursor: Cursor? = contentResolver?.query(uri, null, null,
        null, null)
    cursor.use { cursor ->
        if (cursor != null && cursor.moveToFirst()) {
            val displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME))
            Log.e("JHTEST", "File Name : ${displayName}")
        }
    }
}

 

Mime Type

  • 확장자 파일 (link)
  • hwp, hwpx, hwt, hml 관련 link
  • xlsm 관련 link

인터넷에서 Mime Type에 대해 검색해 보았습니다.
실제 인터넷에 적힌것과 다른것도 있었습니다.
(실제 파일을 첨부하여 소스로 로그 찍어보았습니다.)

제가 정확한건 아닙니다! 다들 잘 알아보시길..
빨간글씨 : 내가 제어해야할 파일 형식들
파란글씨 : 실제 인터넷과 달랐던 형식들, 로그에 찍힌 MimeType

오디오 audio/mpeg mp3
mpga
mpega
mp2
m4a
문서 application/msword doc
dot
문서 application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
dotx
문서 application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
문서 text/rtf rtf
문서 application/vnd.ms-excel xls
xlt
xlsm
문서 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
문서 application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
문서 application/vnd.ms-powerpoint ppt pps pot
문서 application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
문서 application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
문서 application/vnd.openxmlformats-officedocument.presentationml.template potx
문서 application/pdf pdf
문서 application/hwp, application/vnd.hancom.hwp, android/x-hwp 인터넷에서 찾은것과 다름 hwp
문서 application/vnd.hancom.hwt 인터넷에서 찾은것과 다름 hwt
문서 application/vnd.hancom.hml, application/octet-stream hml
문서 application/vnd.hancom.hwpx 인터넷에서 찾은것과 다름 hwpx
문서 application/octet-stream show
cell
hwdt
hwpx
hwt
문서 application/vnd.ms-excel.sheet.macroenabled.12 xlsm

 

실제 로그 찍어본 스샷 (안드로이드에서 확인한겁니다)

반응형