Notice
Recent Posts
Recent Comments
Link
투케이2K
136. (kotlin/코틀린) [유틸 파일] urlFileExtensionName : URL 주소 파일 확장자 포함 확인 실시 본문
Kotlin
136. (kotlin/코틀린) [유틸 파일] urlFileExtensionName : URL 주소 파일 확장자 포함 확인 실시
투케이2K 2022. 12. 27. 20:50[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// TODO [SEARCH FAST] : [RETURN] urlFileExtensionName : URL 주소 파일 확장자 포함 확인 실시
fun urlFileExtensionName(data: String): String {
/**
* // -----------------------------------------
* [urlFileExtensionName 메소드 설명]
* // -----------------------------------------
* 1. url 형식 주소에서 파일 확장자가 포함되었는지 확인
* // -----------------------------------------
* 2. 호출 방식 :
*
* C_Util.urlFileExtensionName("http://img.championat.com/myImage.jpg")
*
* C_Util.urlFileExtensionName("http://img.championat.com/news/big/l/c/ujejn-runi_1439911080563855663.jpg")
*
* C_Util.urlFileExtensionName("http://img.championat.com/static?name=twok&file=myImage.jpg")
*
* // -----------------------------------------
* 3. 리턴 데이터 : 파일 확장자 포함하는 주소인 경우 확장자 명 리턴 / 아니면 null 리턴
*
* jpg / null
* // -----------------------------------------
* 4. 참고 [1] : html a 태그 소스 코드
*
* <a href='f:http://img.championat.com/news/big/l/c/ujejn-runi_1439911080563855663.jpg' download="file"> 파일다운로드 </a>
* // -----------------------------------------
* 5. 참고 [2] : 필수 호출 방식
*
* a 태그 href 를 사용해 호출 할 경우 쿼리스트링 형태로 들어오면 안되고, 반드시 [주소/img.jpg] 처럼 경로 설정이 되어야함
* // -----------------------------------------
*/
// [리턴 변수 선언 실시]
var result: String = ""
var debug = ""
// [문자열 데이터 널 판단 수행 실시]
try {
if (C_Util.stringNotNull(data) == true && data.startsWith("http") == true) { // [널이 아닌 경우]
// [파일 확장자 검사 수행 실시]
val mimeTypeMap = MimeTypeMap.getSingleton()
val extension = MimeTypeMap.getFileExtensionFromUrl(data.trim()).toString() // [jpg]
val mimeType = mimeTypeMap.getMimeTypeFromExtension(extension).toString() // [image/jpeg]
// [리턴 변수에 삽입 실시]
result = extension
// [파일 확장자명 종료 확인]
if (C_Util.stringNotNull(result) == true) { // [널 값이 아님 : 정상 확장자 포함]
// [디버그 삽입]
debug = "1"
}
else { // [널 인 경우]
// [디버그 삽입]
debug = "2"
val fileName = data.substring(data.trim().lastIndexOf('/') + 1)
val fileExt = MimeTypeMap.getFileExtensionFromUrl(fileName.trim()).toString() // [jpg]
// [리턴 변수에 삽입 실시]
result = fileExt
}
// [쿼리 스트링에서 파일 확장자 검사 확인]
if (C_Util.stringNotNull(result) == true) { // [널 값이 아님 : 정상 확장자 포함]
}
else { // [널 인 경우]
val uri: Uri = Uri.parse(data.trim())
val host: String = uri.getHost().toString() // [호스트]
val endCheck = host + "?" // [마지막 종료 형식 확인 위함 : 스키마 데이터 널 체크]
if (uri.getQueryParameterNames() != null && uri.getQueryParameterNames().size > 0
&& data.trim().endsWith(endCheck.trim()) == false) { // KEY 값이 하나라도 포함된 경우
// [배열 순회하면서 파일 확장자 여부 값 확인 실시]
val keyList = ArrayList(uri.getQueryParameterNames())
for (i in 0 until keyList.size) {
// [파일 이름 확인]
val fileExt = MimeTypeMap.getFileExtensionFromUrl(uri.getQueryParameter(keyList.get(i).toString())).toString() // [jpg]
// [리턴 변수에 삽입 실시]
result = fileExt
}
// [디버그 삽입]
debug = "3"
}
else {
// [디버그 삽입]
debug = "4"
// [리턴 변수에 삽입 실시]
result = ""
}
}
}
} catch (e: Exception) {
e.printStackTrace()
}
// [로그 출력 실시]
///*
Log.i("---","---")
Log.d("//===========//","================================================")
Log.i("","\n"+"[C_Util >> urlFileExtensionName() :: URL 주소 파일 확장자 포함 확인 실시]")
Log.i("","\n"+"--------------------------------")
Log.i("","\n"+"[INPUT :: "+data+"]")
Log.i("","\n"+"--------------------------------")
Log.i("","\n"+"[DEBUG :: "+debug+"]")
Log.i("","\n"+"--------------------------------")
Log.i("","\n"+"[RETURN :: "+result+"]")
Log.d("//===========//","================================================")
Log.i("---","---")
// */
// [리턴 결과 반환 실시]
return result
}
[결과 출력]
반응형
'Kotlin' 카테고리의 다른 글
Comments