This commit is contained in:
kunfei
2023-03-14 23:05:28 +08:00
parent 19b796b9c4
commit 41a2dcb475

View File

@@ -1,5 +1,10 @@
package io.legado.app.utils
import java.net.HttpURLConnection
import java.net.URL
import java.net.URLDecoder
import java.nio.charset.StandardCharsets
object UrlUtil {
fun replaceReservedChar(text: String): String {
@@ -24,6 +29,42 @@ object UrlUtil {
.replace("|", "%7C")
}
fun getFileName(fileUrl: String): String {
var fileName = ""
try {
val url = URL(fileUrl)
val conn: HttpURLConnection = url.openConnection() as HttpURLConnection
conn.requestMethod = "GET"
conn.connect()
// 方法一
val raw: String? = conn.getHeaderField("Content-Disposition")
if (raw != null && raw.indexOf("=") > 0) {
fileName = raw.split("=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1]
fileName =
String(
fileName.toByteArray(StandardCharsets.ISO_8859_1),
StandardCharsets.UTF_8
)
}
// 方法二
var newUrl: String? = conn.url.file
if (newUrl == null || newUrl.isEmpty()) {
newUrl = URLDecoder.decode(newUrl, "UTF-8")
var pos = newUrl.indexOf('?')
if (pos > 0) {
newUrl = newUrl.substring(0, pos)
}
pos = newUrl!!.lastIndexOf('/')
fileName = newUrl.substring(pos + 1)
}
} catch (e: Exception) {
e.printStackTrace()
}
return fileName
}
fun getSuffix(url: String, default: String): String {
val suffix = url.substringAfterLast(".").substringBeforeLast(",")
//检查截取的后缀字符是否合法 [a-zA-Z0-9]