我正在尝试使用以下代码下载文件。我需要确定正在下载的文件的文件名和 mime 类型。我从中下载的 URL 不包含文件名。我查看了与下面使用的缓冲流有关的方法,但没有看到任何方法可以做到这一点。
con = (HttpURLConnection) url.openConnection();
//authenticate this request
if (passwordAuthentication != null) {
String auth = passwordAuthentication.getUserName()+":"+passwordAuthentication.getPassword();
con.setRequestProperty("Authentication", Base64.encodeBase64(auth.getBytes()).toString());
}
BufferedInputStream bis = new BufferedInputStream(con.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getName()));
while ((i = bis.read()) != -1) {
bos.write(i);
}
bos.flush();
bis.close();
我看到我可以通过 获取它String contentType = con.getHeaderField("Content-Type");
,但返回text/html
的不是正在下载的实际文件的 ContentType。
编辑: 这不是一个重复的问题,另一种方法不提供解决方案,如下所述。
我现在尝试保存没有文件扩展名的文件并使用MagicMatch match = Magic.getMagicMatch(file, true);
,但它返回text/plain
. 我猜那是因为我在没有文件扩展名的情况下保存了它。